rendered paste bodyseg000:00899820 ; DWORD __stdcall gg_pipethread(LPVOID)
seg000:00899820 gg_pipethread proc near ; DATA XREF: sub_8996D0+24o
seg000:00899820 ; gg_createpipethread+5Eo
seg000:00899820
seg000:00899820 var_40 = dword ptr -40h
seg000:00899820 Buffer = dword ptr -3Ch
seg000:00899820 var_38 = dword ptr -38h
seg000:00899820 var_34 = dword ptr -34h
seg000:00899820 lpString = dword ptr -30h
seg000:00899820 var_2C = dword ptr -2Ch
seg000:00899820 TotalBytesAvail = dword ptr -20h
seg000:00899820 NumberOfBytesRead= dword ptr -1Ch
seg000:00899820 var_18 = dword ptr -18h
seg000:00899820 var_10 = dword ptr -10h
seg000:00899820 var_4 = dword ptr -4
seg000:00899820 arg_0 = dword ptr 8
seg000:00899820
seg000:00899820 push ebp
seg000:00899821 mov ebp, esp ; ebp = esp;
seg000:00899823 push 0FFFFFFFFh
seg000:00899825 push offset unk_9475B0
seg000:0089982A push offset unknown_libname_398 ; Microsoft VisualC 2-7/net runtime
seg000:0089982F mov eax, large fs:0 ; eax = large fs:0;
seg000:00899835 push eax
seg000:00899836 mov large fs:0, esp ; large fs:0 = esp;
seg000:0089983D sub esp, 30h ; esp -= 30h;
seg000:00899840 push ebx
seg000:00899841 push esi
seg000:00899842 push edi
seg000:00899843 mov [ebp+var_18], esp ; [ebp+var_18] = esp;
seg000:00899846 mov esi, [ebp+arg_0] ; esi = [ebp+arg_0];
seg000:00899849 xor ebx, ebx ; ebx = 0;
seg000:0089984B mov [ebp+TotalBytesAvail], ebx ; [ebp+TotalBytesAvail] = ebx;
seg000:0089984E mov [ebp+var_40], ebx ; [ebp+var_40] = ebx;
seg000:00899851 mov [ebp+var_2C], ebx ; [ebp+var_2C] = ebx;
seg000:00899854 mov [ebp+var_4], ebx ; [ebp+var_4] = ebx;
seg000:00899857 mov edi, ds:ReadFile ; edi = ds:ReadFile;
seg000:0089985D
seg000:0089985D loc_89985D: ; CODE XREF: gg_pipethread+E6j
seg000:0089985D ; gg_pipethread+F6j ...
seg000:0089985D cmp [ebp+TotalBytesAvail], ebx
seg000:00899860 ja loc_899951
seg000:00899866 push ebx
seg000:00899867 lea eax, [ebp+TotalBytesAvail] ; eax = &[ebp+TotalBytesAvail];
seg000:0089986A push eax
seg000:0089986B push ebx
seg000:0089986C push ebx
seg000:0089986D push ebx
seg000:0089986E mov ecx, [esi+8] ; ecx = [esi+8];
seg000:00899871 push ecx
seg000:00899872 call ds:PeekNamedPipe ; ds:PeekNamedPipe(ecx, ebx, ebx, ebx, eax, ebx);
seg000:00899878 test eax, eax
seg000:0089987A jnz short loc_899890 ; if (eax != 0) goto loc_899890;
seg000:0089987C push ebx
seg000:0089987D push 60Fh
seg000:00899882 push esi
seg000:00899883 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899888 test al, al
seg000:0089988A jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899890
seg000:00899890 loc_899890: ; CODE XREF: gg_pipethread+5Aj
seg000:00899890 cmp [ebp+TotalBytesAvail], ebx
seg000:00899893 jnz loc_899951 ; if ([ebp+TotalBytesAvail] != ebx) goto loc_899951;
seg000:00899899 push 32h
seg000:0089989B mov edx, [esi+10h] ; edx = [esi+10h];
seg000:0089989E push edx
seg000:0089989F call ds:WaitForSingleObject ; ds:WaitForSingleObject(edx, 32h);
seg000:008998A5 test eax, eax
seg000:008998A7 jz loc_899B49 ; if (eax == 0) goto loc_899B49;
seg000:008998AD mov eax, [ebp+var_2C] ; eax = [ebp+var_2C];
seg000:008998B0 inc eax ; eax++;
seg000:008998B1 mov [ebp+var_2C], eax ; [ebp+var_2C] = eax;
seg000:008998B4 cmp eax, 0C8h
seg000:008998B9 jl short loc_899903
seg000:008998BB push ebx
seg000:008998BC push 60Eh
seg000:008998C1 push 8B1h
seg000:008998C6 mov ecx, esi ; ecx = esi;
seg000:008998C8 call gg_sendpipedata ; gg_sendpipedata(8B1h, 60Eh, ebx);
seg000:008998CD test al, al
seg000:008998CF jnz short loc_8998E5 ; if (al != 0) goto loc_8998E5;
seg000:008998D1 push ebx
seg000:008998D2 push 60Fh
seg000:008998D7 push esi
seg000:008998D8 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:008998DD test al, al
seg000:008998DF jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:008998E5
seg000:008998E5 loc_8998E5: ; CODE XREF: gg_pipethread+AFj
seg000:008998E5 mov eax, [ebp+var_2C] ; eax = [ebp+var_2C];
seg000:008998E8 cmp eax, 320h
seg000:008998ED jl short loc_899903
seg000:008998EF push eax
seg000:008998F0 push 618h
seg000:008998F5 push esi
seg000:008998F6 call gg_piperecvhandler ; sub_894FB0(esi, 618h, eax);
seg000:008998FB test al, al
seg000:008998FD jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899903
seg000:00899903 loc_899903: ; CODE XREF: gg_pipethread+99j
seg000:00899903 ; gg_pipethread+CDj
seg000:00899903 cmp [esi+14h], bl
seg000:00899906 jz loc_89985D ; if ([esi+14h] == bl) goto loc_89985D;
seg000:0089990C mov eax, [ebp+var_40] ; eax = [ebp+var_40];
seg000:0089990F inc eax ; eax++;
seg000:00899910 mov [ebp+var_40], eax ; [ebp+var_40] = eax;
seg000:00899913 cmp eax, 50h
seg000:00899916 jl loc_89985D
seg000:0089991C mov [ebp+var_40], ebx ; [ebp+var_40] = ebx;
seg000:0089991F mov [esi+14h], bl ; [esi+14h] = bl;
seg000:00899922 push ebx
seg000:00899923 push ebx
seg000:00899924 push 8B0h
seg000:00899929 mov ecx, esi ; ecx = esi;
seg000:0089992B call gg_sendpipedata ; gg_sendpipedata(8B0h, ebx, ebx);
seg000:00899930 test al, al
seg000:00899932 jnz loc_89985D ; if (al != 0) goto loc_89985D;
seg000:00899938 push ebx
seg000:00899939 push 60Fh
seg000:0089993E push esi
seg000:0089993F call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899944 test al, al
seg000:00899946 jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:0089994C jmp loc_89985D ; goto loc_89985D;
seg000:00899951 ; ---------------------------------------------------------------------------
seg000:00899951
seg000:00899951 loc_899951: ; CODE XREF: gg_pipethread+40j
seg000:00899951 ; gg_pipethread+73j
seg000:00899951 mov [ebp+var_2C], ebx ; [ebp+var_2C] = ebx;
seg000:00899954 push ebx
seg000:00899955 lea ecx, [ebp+NumberOfBytesRead] ; ecx = &[ebp+NumberOfBytesRead];
seg000:00899958 push ecx
seg000:00899959 push 10h
seg000:0089995B lea edx, [ebp+Buffer] ; edx = &[ebp+Buffer];
seg000:0089995E push edx
seg000:0089995F mov eax, [esi+8] ; eax = [esi+8];
seg000:00899962 push eax
seg000:00899963 call edi ; ReadFile ; edi(eax, edx, 10h, ecx, ebx);
seg000:00899965 test eax, eax
seg000:00899967 jz short loc_89996E ; if (eax == 0) goto loc_89996E;
seg000:00899969 cmp [ebp+NumberOfBytesRead], ebx
seg000:0089996C jnz short loc_899982 ; if ([ebp+NumberOfBytesRead] != ebx) goto loc_899982;
seg000:0089996E
seg000:0089996E loc_89996E: ; CODE XREF: gg_pipethread+147j
seg000:0089996E push ebx
seg000:0089996F push 60Fh
seg000:00899974 push esi
seg000:00899975 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:0089997A test al, al
seg000:0089997C jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899982
seg000:00899982 loc_899982: ; CODE XREF: gg_pipethread+14Cj
seg000:00899982 mov ecx, [ebp+NumberOfBytesRead] ; ecx = [ebp+NumberOfBytesRead];
seg000:00899985 sub [ebp+TotalBytesAvail], ecx ; [ebp+TotalBytesAvail] -= ecx;
seg000:00899988 mov eax, [ebp+var_34] ; eax = [ebp+var_34];
seg000:0089998B cmp eax, 60Eh
seg000:00899990 jz loc_89985D ; if (eax == 60Eh) goto loc_89985D;
seg000:00899996 mov ecx, [ebp+Buffer] ; ecx = [ebp+Buffer];
seg000:00899999 cmp ecx, 8B1h
seg000:0089999F jnz loc_899A53 ; if (ecx != 8B1h) goto loc_899A53;
seg000:008999A5 cmp eax, 613h
seg000:008999AA jnz short loc_8999F2 ; if (eax != 613h) goto loc_8999F2;
seg000:008999AC mov eax, [ebp+lpString] ; eax = [ebp+lpString];
seg000:008999AF cmp eax, 104h
seg000:008999B4 ja loc_899B49
seg000:008999BA push ebx
seg000:008999BB lea edx, [ebp+NumberOfBytesRead] ; edx = &[ebp+NumberOfBytesRead];
seg000:008999BE push edx
seg000:008999BF push eax
seg000:008999C0 lea eax, [esi+2Ch] ; eax = &[esi+2Ch];
seg000:008999C3 push eax
seg000:008999C4 mov ecx, [esi+8] ; ecx = [esi+8];
seg000:008999C7 push ecx
seg000:008999C8 call edi ; ReadFile ; edi(ecx, eax, eax, edx, ebx);
seg000:008999CA test eax, eax
seg000:008999CC jz short loc_8999D3 ; if (eax == 0) goto loc_8999D3;
seg000:008999CE cmp [ebp+NumberOfBytesRead], ebx
seg000:008999D1 jnz short loc_8999E7 ; if ([ebp+NumberOfBytesRead] != ebx) goto loc_8999E7;
seg000:008999D3
seg000:008999D3 loc_8999D3: ; CODE XREF: gg_pipethread+1ACj
seg000:008999D3 push ebx
seg000:008999D4 push 60Fh
seg000:008999D9 push esi
seg000:008999DA call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:008999DF test al, al
seg000:008999E1 jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:008999E7
seg000:008999E7 loc_8999E7: ; CODE XREF: gg_pipethread+1B1j
seg000:008999E7 mov edx, [ebp+NumberOfBytesRead] ; edx = [ebp+NumberOfBytesRead];
seg000:008999EA sub [ebp+TotalBytesAvail], edx ; [ebp+TotalBytesAvail] -= edx;
seg000:008999ED jmp loc_89985D ; goto loc_89985D;
seg000:008999F2 ; ---------------------------------------------------------------------------
seg000:008999F2
seg000:008999F2 loc_8999F2: ; CODE XREF: gg_pipethread+18Aj
seg000:008999F2 cmp eax, 619h
seg000:008999F7 jnz short loc_899A53 ; if (eax != 619h) goto loc_899A53;
seg000:008999F9 mov eax, [ebp+lpString] ; eax = [ebp+lpString];
seg000:008999FC cmp eax, 10h
seg000:008999FF ja loc_899B49
seg000:00899A05 push ebx
seg000:00899A06 lea ecx, [ebp+NumberOfBytesRead] ; ecx = &[ebp+NumberOfBytesRead];
seg000:00899A09 push ecx
seg000:00899A0A push eax
seg000:00899A0B lea edx, [esi+18h] ; edx = &[esi+18h];
seg000:00899A0E push edx
seg000:00899A0F mov eax, [esi+8] ; eax = [esi+8];
seg000:00899A12 push eax
seg000:00899A13 call edi ; ReadFile ; edi(eax, edx, eax, ecx, ebx);
seg000:00899A15 test eax, eax
seg000:00899A17 jz short loc_899A1E ; if (eax == 0) goto loc_899A1E;
seg000:00899A19 cmp [ebp+NumberOfBytesRead], ebx
seg000:00899A1C jnz short loc_899A32 ; if ([ebp+NumberOfBytesRead] != ebx) goto loc_899A32;
seg000:00899A1E
seg000:00899A1E loc_899A1E: ; CODE XREF: gg_pipethread+1F7j
seg000:00899A1E push ebx
seg000:00899A1F push 60Fh
seg000:00899A24 push esi
seg000:00899A25 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899A2A test al, al
seg000:00899A2C jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899A32
seg000:00899A32 loc_899A32: ; CODE XREF: gg_pipethread+1FCj
seg000:00899A32 mov ecx, [ebp+NumberOfBytesRead] ; ecx = [ebp+NumberOfBytesRead];
seg000:00899A35 sub [ebp+TotalBytesAvail], ecx ; [ebp+TotalBytesAvail] -= ecx;
seg000:00899A38 mov edx, [ebp+lpString] ; edx = [ebp+lpString];
seg000:00899A3B push edx
seg000:00899A3C mov eax, [ebp+var_34] ; eax = [ebp+var_34];
seg000:00899A3F push eax
seg000:00899A40 push esi
seg000:00899A41 call gg_piperecvhandler ; sub_894FB0(esi, eax, edx);
seg000:00899A46 test al, al
seg000:00899A48 jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899A4E jmp loc_89985D ; goto loc_89985D;
seg000:00899A53 ; ---------------------------------------------------------------------------
seg000:00899A53
seg000:00899A53 loc_899A53: ; CODE XREF: gg_pipethread+17Fj
seg000:00899A53 ; gg_pipethread+1D7j
seg000:00899A53 cmp ecx, 8B2h
seg000:00899A59 jnz short loc_899A8A ; if (ecx != 8B2h) goto loc_899A8A;
seg000:00899A5B cmp eax, ebx
seg000:00899A5D jnz short loc_899A6A ; if (eax != ebx) goto loc_899A6A;
seg000:00899A5F mov [esi+14h], bl ; [esi+14h] = bl;
seg000:00899A62 inc dword ptr [esi+0Ch] ; dword ptr [esi+0Ch]++;
seg000:00899A65 jmp loc_89985D ; goto loc_89985D;
seg000:00899A6A ; ---------------------------------------------------------------------------
seg000:00899A6A
seg000:00899A6A loc_899A6A: ; CODE XREF: gg_pipethread+23Dj
seg000:00899A6A cmp eax, 610h
seg000:00899A6F jnz loc_89985D ; if (eax != 610h) goto loc_89985D;
seg000:00899A75 push ebx
seg000:00899A76 push eax
seg000:00899A77 push esi
seg000:00899A78 call gg_piperecvhandler ; sub_894FB0(esi, eax, ebx);
seg000:00899A7D test al, al
seg000:00899A7F jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899A85 jmp loc_89985D ; goto loc_89985D;
seg000:00899A8A ; ---------------------------------------------------------------------------
seg000:00899A8A
seg000:00899A8A loc_899A8A: ; CODE XREF: gg_pipethread+239j
seg000:00899A8A cmp ecx, 8B0h
seg000:00899A90 jnz short loc_899AE7 ; if (ecx != 8B0h) goto loc_899AE7;
seg000:00899A92 mov ecx, [esi+0Ch] ; ecx = [esi+0Ch];
seg000:00899A95 cmp ecx, [ebp+var_38]
seg000:00899A98 push ebx
seg000:00899A99 jz short loc_899ABA
seg000:00899A9B push 60Fh
seg000:00899AA0 push esi
seg000:00899AA1 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899AA6 test al, al
seg000:00899AA8 jz loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899AAE mov byte ptr [esi+14h], 1 ; byte ptr [esi+14h] = 1;
seg000:00899AB2 inc dword ptr [esi+0Ch] ; dword ptr [esi+0Ch]++;
seg000:00899AB5 jmp loc_89985D ; goto loc_89985D;
seg000:00899ABA ; ---------------------------------------------------------------------------
seg000:00899ABA
seg000:00899ABA loc_899ABA: ; CODE XREF: gg_pipethread+279j
seg000:00899ABA push eax
seg000:00899ABB push 8B2h
seg000:00899AC0 mov ecx, esi ; ecx = esi;
seg000:00899AC2 call gg_sendpipedata ; gg_sendpipedata(8B2h, eax, edi);
seg000:00899AC7 test al, al
seg000:00899AC9 jnz short loc_899ADB ; if (al != 0) goto loc_899ADB;
seg000:00899ACB push ebx
seg000:00899ACC push 60Fh
seg000:00899AD1 push esi
seg000:00899AD2 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899AD7 test al, al
seg000:00899AD9 jz short loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899ADB
seg000:00899ADB loc_899ADB: ; CODE XREF: gg_pipethread+2A9j
seg000:00899ADB mov byte ptr [esi+14h], 1 ; byte ptr [esi+14h] = 1;
seg000:00899ADF inc dword ptr [esi+0Ch] ; dword ptr [esi+0Ch]++;
seg000:00899AE2 jmp loc_89985D ; goto loc_89985D;
seg000:00899AE7 ; ---------------------------------------------------------------------------
seg000:00899AE7
seg000:00899AE7 loc_899AE7: ; CODE XREF: gg_pipethread+270j
seg000:00899AE7 cmp ecx, 8B1h
seg000:00899AED jnz loc_89985D ; if (ecx != 8B1h) goto loc_89985D;
seg000:00899AF3 cmp eax, 610h
seg000:00899AF8 jnz short loc_899B09 ; if (eax != 610h) goto loc_899B09;
seg000:00899AFA push ebx
seg000:00899AFB push eax
seg000:00899AFC push esi
seg000:00899AFD call gg_piperecvhandler ; sub_894FB0(esi, eax, ebx);
seg000:00899B02 test al, al
seg000:00899B04 jz short loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899B06 mov eax, [ebp+var_34] ; eax = [ebp+var_34];
seg000:00899B09
seg000:00899B09 loc_899B09: ; CODE XREF: gg_pipethread+2D8j
seg000:00899B09 mov edx, [ebp+lpString] ; edx = [ebp+lpString];
seg000:00899B0C push edx
seg000:00899B0D push eax
seg000:00899B0E push 8B2h
seg000:00899B13 mov ecx, esi ; ecx = esi;
seg000:00899B15 call gg_sendpipedata ; gg_sendpipedata(8B2h, eax, edx);
seg000:00899B1A test al, al
seg000:00899B1C jnz short loc_899B33 ; if (al != 0) goto loc_899B33;
seg000:00899B1E push ebx
seg000:00899B1F push 60Fh
seg000:00899B24 push esi
seg000:00899B25 call gg_piperecvhandler ; sub_894FB0(esi, 60Fh, ebx);
seg000:00899B2A test al, al
seg000:00899B2C jz short loc_899B49 ; if (al == 0) goto loc_899B49;
seg000:00899B2E jmp loc_89985D ; goto loc_89985D;
seg000:00899B33 ; ---------------------------------------------------------------------------
seg000:00899B33
seg000:00899B33 loc_899B33: ; CODE XREF: gg_pipethread+2FCj
seg000:00899B33 mov eax, [ebp+lpString] ; eax = [ebp+lpString];
seg000:00899B36 push eax
seg000:00899B37 mov ecx, [ebp+var_34] ; ecx = [ebp+var_34];
seg000:00899B3A push ecx
seg000:00899B3B push esi
seg000:00899B3C call gg_piperecvhandler ; sub_894FB0(esi, ecx, eax);
seg000:00899B41 test al, al
seg000:00899B43 jnz loc_89985D ; if (al != 0) goto loc_89985D;
seg000:00899B49
seg000:00899B49 loc_899B49: ; CODE XREF: gg_pipethread+6Aj
seg000:00899B49 ; gg_pipethread+87j ...
seg000:00899B49 mov eax, [esi+8] ; eax = [esi+8];
seg000:00899B4C or edi, 0FFFFFFFFh
seg000:00899B4F cmp eax, edi
seg000:00899B51 jz short loc_899B5D ; if (eax == edi) goto loc_899B5D;
seg000:00899B53 push eax
seg000:00899B54 call ds:CloseHandle ; ds:CloseHandle(eax);
seg000:00899B5A mov [esi+8], edi ; [esi+8] = edi;
seg000:00899B5D
seg000:00899B5D loc_899B5D: ; CODE XREF: gg_pipethread+331j
seg000:00899B5D push 7530h
seg000:00899B62 mov edx, [esi+10h] ; edx = [esi+10h];
seg000:00899B65 push edx
seg000:00899B66 call ds:WaitForSingleObject ; ds:WaitForSingleObject(edx, 7530h);
seg000:00899B6C test eax, eax
seg000:00899B6E jnz short loc_899B93 ; if (eax != 0) goto loc_899B93;
seg000:00899B70 mov eax, [ebp+var_34] ; eax = [ebp+var_34];
seg000:00899B73 cmp eax, 610h
seg000:00899B78 jz short loc_899B93 ; if (eax == 610h) goto loc_899B93;
seg000:00899B7A cmp eax, 60Fh
seg000:00899B7F jz short loc_899B93 ; if (eax == 60Fh) goto loc_899B93;
seg000:00899B81 push ebx
seg000:00899B82 push 610h
seg000:00899B87 push 8B1h
seg000:00899B8C mov ecx, esi ; ecx = esi;
seg000:00899B8E call gg_sendpipedata ; gg_sendpipedata(8B1h, 610h, ebx);
seg000:00899B93
seg000:00899B93 loc_899B93: ; CODE XREF: gg_pipethread+34Ej
seg000:00899B93 ; gg_pipethread+358j ...
seg000:00899B93 mov [ebp+var_4], edi ; [ebp+var_4] = edi;
seg000:00899B96 jmp short loc_899BAE ; goto loc_899BAE;
seg000:00899B98 ; ---------------------------------------------------------------------------
seg000:00899B98 mov eax, [ebp-14h] ; eax = [ebp-14h];
seg000:00899B9B mov ecx, [eax] ; ecx = [eax];
seg000:00899B9D mov eax, [ecx+0Ch] ; eax = [ecx+0Ch];
seg000:00899BA0 mov [ebp-28h], eax ; [ebp-28h] = eax;
seg000:00899BA3 retn ; return;
seg000:00899BA4 ; ---------------------------------------------------------------------------
seg000:00899BA4 mov esp, [ebp-18h] ; esp = [ebp-18h];
seg000:00899BA7 mov dword ptr [ebp-4], 0FFFFFFFFh ; dword ptr [ebp-4] = 0FFFFFFFFh;
seg000:00899BAE
seg000:00899BAE loc_899BAE: ; CODE XREF: gg_pipethread+376j
seg000:00899BAE xor eax, eax ; eax = 0;
seg000:00899BB0 mov ecx, [ebp+var_10] ; ecx = [ebp+var_10];
seg000:00899BB3 mov large fs:0, ecx ; large fs:0 = ecx;
seg000:00899BBA pop edi
seg000:00899BBB pop esi
seg000:00899BBC pop ebx
seg000:00899BBD mov esp, ebp ; esp = ebp;
seg000:00899BBF pop ebp
seg000:00899BC0 retn 4 ; return;
seg000:00899BC0 gg_pipethread endp