All pastes #82720 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-07-08 21:32 UTC
rendered paste body
seg000: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