All pastes #2065077 Raw Edit

Untitled

public text v1 · immutable
#2065077 ·published 2011-05-19 23:10 UTC
rendered paste body
.text:1043EA80 ; =============== S U B R O U T I N E =======================================
.text:1043EA80
.text:1043EA80
.text:1043EA80 sub_1043EA80    proc near               ; CODE XREF: sub_1043F460+2Bj
.text:1043EA80                                         ; sub_1043F820+28p
.text:1043EA80
.text:1043EA80 arg_0           = dword ptr  4
.text:1043EA80
.text:1043EA80                 push    ebx
.text:1043EA81                 push    esi
.text:1043EA82                 mov     esi, eax
.text:1043EA84                 mov     eax, [esi+10h]
.text:1043EA87                 mov     ebx, [eax]
.text:1043EA89                 mov     eax, [esp+8+arg_0]
.text:1043EA8D                 add     eax, 0FFFFFFFDh
.text:1043EA90                 cmp     eax, 4          ; switch 5 cases
.text:1043EA93                 push    edi
.text:1043EA94                 ja      loc_1043ED06    ; default
.text:1043EA94                                         ; jumptable 1043EA9A case 1
.text:1043EA9A                 jmp     ds:off_1043ED24[eax*4] ; switch jump
.text:1043EAA1
.text:1043EAA1 loc_1043EAA1:                           ; DATA XREF: .text:off_1043ED24o
.text:1043EAA1                 lea     eax, [esi+15Ch] ; jumptable 1043EA9A case 0
.text:1043EAA7                 call    sub_1043E780
.text:1043EAAC                 movzx   ecx, word ptr [esi+40h]
.text:1043EAB0                 add     ecx, 1
.text:1043EAB3                 movzx   eax, ax
.text:1043EAB6                 and     ecx, 0FFFFh
.text:1043EABC                 cmp     ecx, eax
.text:1043EABE                 jz      short loc_1043EB04
.text:1043EAC0                 push    eax
.text:1043EAC1                 push    offset aReceivedUnexpe ; "Received unexpected DATA packet block %"...
.text:1043EAC6                 push    ebx
.text:1043EAC7                 call    sub_104331F0
.text:1043EACC                 add     dword ptr [esi+18h], 1
.text:1043EAD0                 mov     eax, [esi+18h]
.text:1043EAD3                 add     esp, 0Ch
.text:1043EAD6                 cmp     eax, [esi+20h]
.text:1043EAD9                 jle     loc_1043ED00
.text:1043EADF                 movzx   edx, word ptr [esi+40h]
.text:1043EAE3                 add     edx, 1
.text:1043EAE6                 and     edx, 0FFFFh
.text:1043EAEC                 push    edx
.text:1043EAED                 push    offset aTftp_rxGivingU ; "tftp_rx: giving up waiting for block %d"...
.text:1043EAF2                 push    ebx
.text:1043EAF3                 call    sub_10433280
.text:1043EAF8                 add     esp, 0Ch
.text:1043EAFB                 pop     edi
.text:1043EAFC                 pop     esi
.text:1043EAFD                 mov     eax, 47h
.text:1043EB02                 pop     ebx
.text:1043EB03                 retn
.text:1043EB04 ; ---------------------------------------------------------------------------
.text:1043EB04
.text:1043EB04 loc_1043EB04:                           ; CODE XREF: sub_1043EA80+3Ej
.text:1043EB04                 mov     [esi+40h], ax
.text:1043EB08                 lea     edi, [esi+160h]
.text:1043EB0E                 mov     eax, 4
.text:1043EB13                 mov     ecx, edi
.text:1043EB15                 mov     dword ptr [esi+18h], 0
.text:1043EB1C                 call    sub_1043E750
.text:1043EB21                 mov     ax, [esi+40h]
.text:1043EB25                 mov     ecx, edi
.text:1043EB27                 call    sub_1043E760
.text:1043EB2C                 mov     eax, [esi+148h]
.text:1043EB32                 mov     edx, [edi]
.text:1043EB34                 push    eax             ; tolen
.text:1043EB35                 mov     eax, [esi+14h]
.text:1043EB38                 lea     ecx, [esi+0C8h]
.text:1043EB3E                 push    ecx             ; to
.text:1043EB3F                 push    0               ; flags
.text:1043EB41                 push    4               ; len
.text:1043EB43                 push    edx             ; buf
.text:1043EB44                 push    eax             ; s
.text:1043EB45                 call    ds:sendto
.text:1043EB4B                 test    eax, eax
.text:1043EB4D                 jge     short loc_1043EB77
.text:1043EB4F                 call    ds:__imp_WSAGetLastError
.text:1043EB55                 mov     ecx, [esi+10h]
.text:1043EB58                 push    eax
.text:1043EB59                 push    ecx
.text:1043EB5A                 call    sub_1044F4B0
.text:1043EB5F                 push    eax
.text:1043EB60                 push    offset aS_21    ; "%s"
.text:1043EB65                 push    ebx
.text:1043EB66                 call    sub_10433280
.text:1043EB6B                 add     esp, 14h
.text:1043EB6E                 pop     edi
.text:1043EB6F                 pop     esi
.text:1043EB70                 mov     eax, 37h
.text:1043EB75                 pop     ebx
.text:1043EB76                 retn
.text:1043EB77 ; ---------------------------------------------------------------------------
.text:1043EB77
.text:1043EB77 loc_1043EB77:                           ; CODE XREF: sub_1043EA80+CDj
.text:1043EB77                 mov     edx, [esi+154h]
.text:1043EB7D                 xor     eax, eax
.text:1043EB7F                 add     edx, 4
.text:1043EB82                 cmp     [esi+14Ch], edx
.text:1043EB88                 setl    al
.text:1043EB8B                 add     esi, 38h
.text:1043EB8E                 push    esi             ; Time
.text:1043EB8F                 lea     eax, [eax+eax+1]
.text:1043EB93                 mov     [esi-38h], eax
.text:1043EB96                 call    __time64
.text:1043EB9B                 add     esp, 4
.text:1043EB9E                 pop     edi
.text:1043EB9F                 pop     esi
.text:1043EBA0                 xor     eax, eax
.text:1043EBA2                 pop     ebx
.text:1043EBA3                 retn
.text:1043EBA4 ; ---------------------------------------------------------------------------
.text:1043EBA4
.text:1043EBA4 loc_1043EBA4:                           ; CODE XREF: sub_1043EA80+1Aj
.text:1043EBA4                                         ; DATA XREF: .text:off_1043ED24o
.text:1043EBA4                 lea     edi, [esi+160h] ; jumptable 1043EA9A case 3
.text:1043EBAA                 mov     eax, 4
.text:1043EBAF                 mov     ecx, edi
.text:1043EBB1                 mov     word ptr [esi+40h], 0
.text:1043EBB7                 mov     dword ptr [esi+18h], 0
.text:1043EBBE                 call    sub_1043E750
.text:1043EBC3                 mov     ax, [esi+40h]
.text:1043EBC7                 mov     ecx, edi
.text:1043EBC9                 call    sub_1043E760
.text:1043EBCE                 mov     ecx, [esi+148h]
.text:1043EBD4                 mov     eax, [edi]
.text:1043EBD6                 push    ecx             ; tolen
.text:1043EBD7                 mov     ecx, [esi+14h]
.text:1043EBDA                 lea     edx, [esi+0C8h]
.text:1043EBE0                 push    edx             ; to
.text:1043EBE1                 push    0               ; flags
.text:1043EBE3                 push    4               ; len
.text:1043EBE5                 push    eax             ; buf
.text:1043EBE6                 push    ecx             ; s
.text:1043EBE7                 call    ds:sendto
.text:1043EBED                 test    eax, eax
.text:1043EBEF                 jge     short loc_1043EC19
.text:1043EBF1                 call    ds:__imp_WSAGetLastError
.text:1043EBF7                 mov     edx, [esi+10h]
.text:1043EBFA                 push    eax
.text:1043EBFB                 push    edx
.text:1043EBFC                 call    sub_1044F4B0
.text:1043EC01                 push    eax
.text:1043EC02                 push    offset aS_21    ; "%s"
.text:1043EC07                 push    ebx
.text:1043EC08                 call    sub_10433280
.text:1043EC0D                 add     esp, 14h
.text:1043EC10                 pop     edi
.text:1043EC11                 pop     esi
.text:1043EC12                 mov     eax, 37h
.text:1043EC17                 pop     ebx
.text:1043EC18                 retn
.text:1043EC19 ; ---------------------------------------------------------------------------
.text:1043EC19
.text:1043EC19 loc_1043EC19:                           ; CODE XREF: sub_1043EA80+16Fj
.text:1043EC19                 mov     dword ptr [esi], 1
.text:1043EC1F                 add     esi, 38h
.text:1043EC22                 push    esi             ; Time
.text:1043EC23                 call    __time64
.text:1043EC28                 add     esp, 4
.text:1043EC2B                 pop     edi
.text:1043EC2C                 pop     esi
.text:1043EC2D                 xor     eax, eax
.text:1043EC2F                 pop     ebx
.text:1043EC30                 retn
.text:1043EC31 ; ---------------------------------------------------------------------------
.text:1043EC31
.text:1043EC31 loc_1043EC31:                           ; CODE XREF: sub_1043EA80+1Aj
.text:1043EC31                                         ; DATA XREF: .text:off_1043ED24o
.text:1043EC31                 add     dword ptr [esi+18h], 1 ; jumptable 1043EA9A case 4
.text:1043EC35                 mov     eax, [esi+18h]
.text:1043EC38                 push    eax
.text:1043EC39                 movzx   eax, word ptr [esi+40h]
.text:1043EC3D                 add     eax, 1
.text:1043EC40                 and     eax, 0FFFFh
.text:1043EC45                 push    eax
.text:1043EC46                 push    offset aTimeoutWaiting ; "Timeout waiting for block %d ACK.  Retr"...
.text:1043EC4B                 push    ebx
.text:1043EC4C                 call    sub_104331F0
.text:1043EC51                 mov     ecx, [esi+18h]
.text:1043EC54                 add     esp, 10h
.text:1043EC57                 cmp     ecx, [esi+20h]
.text:1043EC5A                 jle     short loc_1043EC6F
.text:1043EC5C                 pop     edi
.text:1043EC5D                 mov     dword ptr [esi+8], 0FFFFFF9Dh
.text:1043EC64                 mov     dword ptr [esi], 3
.text:1043EC6A                 pop     esi
.text:1043EC6B                 xor     eax, eax
.text:1043EC6D                 pop     ebx
.text:1043EC6E                 retn
.text:1043EC6F ; ---------------------------------------------------------------------------
.text:1043EC6F
.text:1043EC6F loc_1043EC6F:                           ; CODE XREF: sub_1043EA80+1DAj
.text:1043EC6F                 mov     edx, [esi+148h]
.text:1043EC75                 mov     ecx, [esi+160h]
.text:1043EC7B                 push    edx             ; tolen
.text:1043EC7C                 mov     edx, [esi+14h]
.text:1043EC7F                 lea     eax, [esi+0C8h]
.text:1043EC85                 push    eax             ; to
.text:1043EC86                 push    0               ; flags
.text:1043EC88                 push    4               ; len
.text:1043EC8A                 push    ecx             ; buf
.text:1043EC8B                 push    edx             ; s
.text:1043EC8C                 call    ds:sendto
.text:1043EC92                 test    eax, eax
.text:1043EC94                 jge     short loc_1043ED00
.text:1043EC96                 call    ds:__imp_WSAGetLastError
.text:1043EC9C                 push    eax
.text:1043EC9D                 mov     eax, [esi+10h]
.text:1043ECA0                 push    eax
.text:1043ECA1                 call    sub_1044F4B0
.text:1043ECA6                 push    eax
.text:1043ECA7                 push    offset aS_21    ; "%s"
.text:1043ECAC                 push    ebx
.text:1043ECAD                 call    sub_10433280
.text:1043ECB2                 add     esp, 14h
.text:1043ECB5                 pop     edi
.text:1043ECB6                 pop     esi
.text:1043ECB7                 mov     eax, 37h
.text:1043ECBC                 pop     ebx
.text:1043ECBD                 retn
.text:1043ECBE ; ---------------------------------------------------------------------------
.text:1043ECBE
.text:1043ECBE loc_1043ECBE:                           ; CODE XREF: sub_1043EA80+1Aj
.text:1043ECBE                                         ; DATA XREF: .text:off_1043ED24o
.text:1043ECBE                 lea     edi, [esi+160h] ; jumptable 1043EA9A case 2
.text:1043ECC4                 mov     eax, 5
.text:1043ECC9                 mov     ecx, edi
.text:1043ECCB                 call    sub_1043E750
.text:1043ECD0                 mov     ax, [esi+40h]
.text:1043ECD4                 mov     ecx, edi
.text:1043ECD6                 call    sub_1043E760
.text:1043ECDB                 mov     ecx, [esi+148h]
.text:1043ECE1                 mov     eax, [edi]
.text:1043ECE3                 push    ecx             ; tolen
.text:1043ECE4                 mov     ecx, [esi+14h]
.text:1043ECE7                 lea     edx, [esi+0C8h]
.text:1043ECED                 push    edx             ; to
.text:1043ECEE                 push    0               ; flags
.text:1043ECF0                 push    4               ; len
.text:1043ECF2                 push    eax             ; buf
.text:1043ECF3                 push    ecx             ; s
.text:1043ECF4                 call    ds:sendto
.text:1043ECFA                 mov     dword ptr [esi], 3
.text:1043ED00
.text:1043ED00 loc_1043ED00:                           ; CODE XREF: sub_1043EA80+59j
.text:1043ED00                                         ; sub_1043EA80+214j
.text:1043ED00                 pop     edi
.text:1043ED01                 pop     esi
.text:1043ED02                 xor     eax, eax
.text:1043ED04                 pop     ebx
.text:1043ED05                 retn
.text:1043ED06 ; ---------------------------------------------------------------------------
.text:1043ED06
.text:1043ED06 loc_1043ED06:                           ; CODE XREF: sub_1043EA80+14j
.text:1043ED06                                         ; sub_1043EA80+1Aj
.text:1043ED06                                         ; DATA XREF: ...
.text:1043ED06                 push    offset aTftp_rxInterna ; default
.text:1043ED06                                         ; jumptable 1043EA9A case 1
.text:1043ED0B                 push    offset aS_21    ; "%s"
.text:1043ED10                 push    ebx
.text:1043ED11                 call    sub_10433280
.text:1043ED16                 add     esp, 0Ch
.text:1043ED19                 pop     edi
.text:1043ED1A                 pop     esi
.text:1043ED1B                 mov     eax, 47h
.text:1043ED20                 pop     ebx
.text:1043ED21                 retn
.text:1043ED21 sub_1043EA80    endp
.text:1043ED21
.text:1043ED21 ; ---------------------------------------------------------------------------
.text:1043ED22                 align 4
.text:1043ED24 off_1043ED24    dd offset loc_1043EAA1  ; DATA XREF: sub_1043EA80+1Ar
.text:1043ED24                 dd offset loc_1043ED06  ; jump table for switch statement
.text:1043ED24                 dd offset loc_1043ECBE
.text:1043ED24                 dd offset loc_1043EBA4
.text:1043ED24                 dd offset loc_1043EC31
.text:1043ED38                 align 10h
.text:1043ED40