Function at 0x40ddf0
Capabilities:
Check http status code
Get file size
Read and send data from client to server
Read data from internet
Read file on windows
Receive data
Send data

Disassembly:
push ebp
lea ebp, [esp - 0x3004]
mov eax, 0x3004
call fcn.00442e30
push 0xffffffffffffffff
push 0x45c8b8
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x479938]
xor eax, ebp
mov dword [ebp + 0x3000], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [str._______________________________ceb3bc13bbea0941a04b2f8226f5d7ea]
mov esi, ecx
push eax
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x1c], esi
call fcn.00401130
mov dword [ebp - 4], 0
call fcn.0042b2d7
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40d481
push 0x80004005
call fcn.00409280
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x2c]
test eax, eax
mov ebx, dword [esi + 0x48]
mov byte [ebp - 4], 1
mov dword [ebp - 0x10], eax
je 0x40d77c
test ebx, ebx
je 0x40d77c
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x40d917
mov ecx, dword [eax]
mov esi, dword [eax + 8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x40d4e7
cmp eax, dword [esi]
jne 0x40d4e7
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x40d522
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x40d91c
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00441da4
add esp, 0x10
add edi, 0x10
mov dword [ebp - 0x28], edi
mov eax, ebx
mov esi, dword [eax + 8]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
mov ebx, dword [ebx]
sub esi, 0x10
mov byte [ebp - 4], 2
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x40d55a
cmp eax, dword [esi]
jne 0x40d55a
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x40d595
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x40d91c
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00441da4
add esp, 0x10
lea esi, [edi + 0x10]
mov dword [ebp - 0x30], esi
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x2c]
push 0x4623f8
push edx
mov byte [ebp - 4], 3
call fcn.00407510
push 0x462194
push eax
lea eax, [ebp - 0x3c]
push eax
mov byte [ebp - 4], 4
call fcn.004032f0
push str.Content_Disposition:_form_data__name_
push eax
lea ecx, [ebp - 0x34]
push ecx
mov byte [ebp - 4], 5
call fcn.004032f0
lea edx, [ebp - 0x28]
push edx
push eax
lea eax, [ebp - 0x38]
push eax
mov byte [ebp - 4], 6
call fcn.00404e60
push str.__r_n_r_n
push eax
lea ecx, [ebp - 0x48]
push ecx
mov byte [ebp - 4], 7
call fcn.004032f0
lea edx, [ebp - 0x30]
push edx
push eax
lea eax, [ebp - 0x40]
push eax
mov byte [ebp - 4], 8
call fcn.00404e60
add esp, 0x48
push 0x462194
push eax
lea ecx, [ebp - 0x4c]
push ecx
mov byte [ebp - 4], 9
call fcn.004032f0
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0xa
call fcn.00402eb0
mov eax, dword [ebp - 0x4c]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40d65d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x40]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d680
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x48]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d6a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x38]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d6c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d6e9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d70c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d72f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d74f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x28]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d772
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0x10], 0
jne 0x40d4a5
push 0x4623f8
lea ecx, [ebp - 0x24]
push ecx
lea edx, [ebp - 0x3c]
push edx
call fcn.004032f0
lea ecx, [ebp - 0x20]
push ecx
push eax
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 0xb
call fcn.00404e60
push str._r_nContent_Disposition:_form_data__name_LocalFile___filename_minidump.zip__r_nContent_Type:_application_x_zip_compressed_r_n_r_n
push eax
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 0xc
call fcn.004032f0
add esp, 0x24
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d7d9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x3c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d7fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x34]
push str._r_n__
push edx
call fcn.00407510
push 0x4623f8
push eax
lea eax, [ebp - 0x18]
push eax
mov byte [ebp - 4], 0x10
call fcn.004032f0
add esp, 0x18
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x12
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d847
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 0x64]
push 0
push edx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edx, dword [ebp - 0x18]
mov ebx, eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax - 0xc]
mov eax, dword [edx - 0xc]
add eax, ecx
add eax, ebx
push eax
mov dword [ebp - 0x10], eax
call fcn.004238eb
mov edi, eax
add esp, 4
test edi, edi
mov dword [ebp - 0x28], edi
jne 0x40d921
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d8a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d8c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d8ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d910
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40ddc2
jmp fcn.004245cf
jmp fcn.00409350
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 4], 1
jle 0x40d939
mov ecx, dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x14]
call fcn.004010b0
mov ecx, dword [ebp - 0x14]
test ecx, ecx
mov dword [ebp - 0x38], ecx
jne 0x40d944
xor eax, eax
jmp 0x40d975
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
add eax, 1
cmp eax, 0x3fffffff
jle 0x40d959
xor eax, eax
jmp 0x40d972
lea esi, [eax + eax]
mov eax, esi
call fcn.00442e60
mov edx, dword [ebp - 0x38]
mov eax, esp
push 0
push esi
push edx
push eax
call fcn.0040cc90
mov ecx, dword [ebp - 0x14]
mov ecx, dword [ecx - 0xc]
push ecx
push eax
push edi
call fcn.004428c0
mov eax, dword [ebp - 0x14]
mov eax, dword [eax - 0xc]
mov edx, dword [ebp - 0x1c]
add esp, 0xc
push 0
lea ecx, [ebp - 0x78]
push ecx
lea esi, [eax + edi]
mov eax, dword [edx + 0x64]
push ebx
push esi
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x40da4c
push edi
call fcn.004238e6
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d9d5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d9f8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40da1b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d910
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40ddc2
mov ecx, dword [ebp - 0x18]
add ebx, esi
cmp dword [ecx - 4], 1
jle 0x40da66
mov ecx, dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x18]
call fcn.004010b0
mov ecx, dword [ebp - 0x18]
test ecx, ecx
mov edi, ecx
jne 0x40da70
xor eax, eax
jmp 0x40da9e
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
add eax, 1
cmp eax, 0x3fffffff
jle 0x40da85
xor eax, eax
jmp 0x40da9b
lea esi, [eax + eax]
mov eax, esi
call fcn.00442e60
mov eax, esp
push 0
push esi
push edi
push eax
call fcn.0040cc90
mov ecx, dword [ebp - 0x18]
mov ecx, dword [ecx - 0xc]
push ecx
push eax
push ebx
call fcn.004428c0
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x74], 0x28
mov dword [ebp - 0x58], edx
add ebx, 0x1c
nop
mov esi, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x14]
push 0
push 8
push 0
lea eax, [ebp - 0x74]
push eax
push ecx
call dword [sym.imp.WININET.dll_HttpSendRequestExW]
mov esi, dword [esi + 0x14]
push ebx
mov edi, eax
call fcn.0040cbd0
add esp, 4
test al, al
jne 0x40dae0
test edi, edi
jne 0x40dbb7
mov edx, dword [ebp - 0x28]
push edx
call fcn.004238e6
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40db40
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40db63
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40db86
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d910
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x40ddc2
mov ecx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x10]
mov dword [ebp - 0x10], ecx
call fcn.0042e585
test ebx, ebx
mov edx, dword [eax + 4]
mov dword [ebp - 0x2c], edx
jbe 0x40dc1e
nop
cmp ebx, 0x1000
mov dword [ebp - 0x30], 0
mov esi, ebx
jb 0x40dbe6
mov esi, 0x1000
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c]
lea eax, [ebp - 0x30]
push eax
mov eax, dword [edx + 0x14]
push esi
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetWriteFile]
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx + 0x16c], 0
mov edi, eax
jne 0x40dc39
test edi, edi
je 0x40dc39
mov eax, dword [ebp - 0x30]
cmp eax, esi
jne 0x40dc1e
add dword [ebp - 0x10], eax
sub ebx, eax
test ebx, ebx
ja 0x40dbd0
test edi, edi
je 0x40dc39
mov edi, dword [ebp - 0x1c]
mov edx, dword [edi + 0x14]
push 0
push 0
push 0
push edx
call dword [sym.imp.WININET.dll_HttpEndRequestW]
test eax, eax
jne 0x40dc6c
mov eax, dword [ebp - 0x28]
push eax
call fcn.004238e6
add esp, 4
lea ecx, [ebp - 0x18]
call fcn.00403460
lea ecx, [ebp - 0x14]
call fcn.00403460
lea ecx, [ebp - 0x24]
call fcn.00403460
lea ecx, [ebp - 0x20]
call fcn.00403460
xor al, al
jmp 0x40ddc2
mov edx, dword [edi + 0x14]
mov ebx, dword [sym.imp.WININET.dll_HttpQueryInfoW]
push 0
lea ecx, [ebp - 0x44]
push ecx
lea esi, [edi + 0x1c]
push esi
push 0x20000013
push edx
mov dword [ebp - 0x44], 4
call ebx
test eax, eax
je 0x40dc39
cmp dword [esi], 0xc8
jne 0x40dd94
mov eax, dword [edi + 0x14]
push 0
lea ecx, [ebp - 0x2c]
push ecx
lea edx, [ebp]
push edx
push 1
push eax
mov dword [ebp - 0x2c], 0x1000
call ebx
test eax, eax
je 0x40dd94
lea ecx, [ebp]
push str.text_html
push ecx
call fcn.00442dcd
add esp, 8
test eax, eax
jne 0x40dced
lea edx, [ebp]
push str.text_xml
push edx
call fcn.00442dcd
add esp, 8
test eax, eax
je 0x40dd94
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0x10], 0
mov edx, dword [edi + 0x14]
lea eax, [ebp - 0x10]
push eax
push 0x1000
lea ecx, [ebp + 0x2000]
push ecx
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x40dd8a
cmp dword [ebp - 0x10], 0
jbe 0x40dd8e
lea ecx, [ebp - 0x1c]
call fcn.00401000
mov eax, dword [ebp - 0x10]
lea ecx, [ebp + 0x2000]
push ecx
mov byte [ebp - 4], 0x13
mov byte [ebp + eax + 0x2000], 0
call ebx
mov esi, eax
add esi, 1
cmp esi, 0x3fffffff
jle 0x40dd4f
xor eax, eax
jmp 0x40dd69
lea eax, [esi + esi]
call fcn.00442e60
mov eax, esp
push 0
push esi
lea edx, [ebp + 0x2000]
push edx
push eax
call fcn.0040cc50
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040d210
lea eax, [ebp - 0x1c]
push eax
lea ecx, [edi + 0x18]
call fcn.00402e90
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x12
call fcn.00403460
cmp dword [ebp - 0x10], 0
jne 0x40dcfa
mov ecx, dword [ebp - 0x28]
push ecx
call fcn.004238e6
add esp, 4
lea ecx, [ebp - 0x18]
call fcn.00403460
lea ecx, [ebp - 0x14]
call fcn.00403460
lea ecx, [ebp - 0x24]
call fcn.00403460
lea ecx, [ebp - 0x20]
call fcn.00403460
mov al, 1
lea esp, [ebp - 0x88]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x3000]
xor ecx, ebp
call fcn.00442241
add ebp, 0x3004
mov esp, ebp
pop ebp
ret
push esi
mov esi, ecx
call fcn.0040cdf0
test al, al
je 0x40de0f
mov ecx, esi
call fcn.0040d290
test al, al
je 0x40de0f
mov ecx, esi
pop esi
jmp 0x40d410
pop esi
ret