Function at 0x402b00
Capabilities:
Download url
Receive data
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x43f2c0
mov eax, dword fs:[0]
push eax
sub esp, 0x68
push ebx
push esi
push edi
mov eax, dword [0x4535c4]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
push 0x4479d0
call fcn.00428d8c
add esp, 4
lea esi, [esp + 0x3c]
call fcn.00406880
xor ebx, ebx
mov dword [esp + 0x80], ebx
call fcn.00413fe6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402b65
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x80], 1
call fcn.00413fe6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402b97
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x3c]
push ecx
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 2
call fcn.004084b0
call fcn.00413fe6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402bd7
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x20], esi
push 0x2e
mov byte [esp + 0x84], 3
mov ecx, dword [esp + 0x30]
push ebx
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004167ae
test eax, eax
je 0x402d54
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
inc ebx
mov dword [esp + 0x38], ebx
cmp ebx, 1
jne 0x402c7f
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x402d36
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402c6c
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402c6c
push eax
call fcn.00408440
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402c5c
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x38]
jmp 0x402d36
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x28]
call fcn.00408960
jmp 0x402d36
push 0x447a10
push ecx
call fcn.00428f99
add esp, 8
test eax, eax
je 0x402d54
mov edx, dword [esp + 0x1c]
push 0x447a14
push edx
call fcn.00428f99
add esp, 8
test eax, eax
je 0x402d54
mov eax, dword [esp + 0x1c]
push 0x447a18
push eax
call fcn.00428f99
add esp, 8
test eax, eax
je 0x402d54
mov ecx, dword [esp + 0x1c]
push 0x447a1c
push ecx
call fcn.00428f99
add esp, 8
test eax, eax
je 0x402d54
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x34]
push 0x447a20
push eax
call fcn.00408120
add esp, 0xc
mov byte [esp + 0x80], 4
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x28]
call fcn.004082b0
mov byte [esp + 0x80], 3
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402d36
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x2c]
push 0x2e
push ebx
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.004167ae
mov esi, dword [esp + 0x20]
test eax, eax
jne 0x402c10
cmp dword [esi - 0xc], 0
jge 0x402d5f
or edi, 0xffffffff
jmp 0x402d7a
push 0x447a24
push esi
call fcn.00428cb3
add esp, 8
test eax, eax
jne 0x402d76
or edi, 0xffffffff
jmp 0x402d7a
sub eax, esi
mov edi, eax
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402d94
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
mov byte [esp + 0x80], 5
mov esi, 1
cmp edi, 0xffffffff
je 0x402de3
push esi
lea ecx, [esp + 0x3c]
push str.__d_
push ecx
call fcn.00401890
mov edx, dword [esp + 0x44]
add esp, 0xc
push 0x4489d3
push edx
lea eax, [esp + 0x28]
push eax
call fcn.00407c90
inc esi
cmp esi, 0x33
jl 0x402db1
push 0x4489d3
push str._download
lea ecx, [esp + 0x28]
push ecx
call fcn.00407c90
mov ecx, dword [esp + 0x20]
mov esi, dword [0x457fb0]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x40], eax
cmp eax, esi
je 0x402e59
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402e4a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402e4a
push eax
call fcn.00408440
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402e3f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [0x457fb0], ebx
jmp 0x402e59
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fb0
call fcn.00408960
mov ecx, dword [0x457fb0]
mov edx, dword [0x457748]
push ecx
push edx
push 0x447a3c
call fcn.00428d8c
add esp, 8
mov eax, esp
mov dword [esp + 0x34], esp
push str.Downloader_Demo.txt
push 0x457748
push eax
call fcn.00408040
add esp, 0xc
lea ecx, [esp + 0x34]
call fcn.004074b0
mov byte [esp + 0x80], 6
mov ecx, dword [eax]
mov esi, dword [0x457fe4]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x402efa
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402eeb
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402eeb
push eax
call fcn.00408440
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402ee0
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [0x457fe4], ebx
jmp 0x402efa
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fe4
call fcn.00408960
mov byte [esp + 0x80], 5
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402f22
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x457fb0]
push ecx
push 0x447a70
call fcn.00428d8c
add esp, 4
mov edx, esp
mov dword [esp + 0x34], esp
push 0x457fb0
push str.http:__down.downrealm.com_get_fileinfo.php_file_name
push edx
call fcn.00408120
add esp, 0xc
lea ecx, [esp + 0x38]
call fcn.004074b0
mov byte [esp + 0x80], 7
mov eax, dword [esp + 0x34]
push eax
push 0x447afc
call fcn.00428d8c
add esp, 8
xor edi, edi
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402f8e
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov byte [esp + 0x80], 8
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402fc0
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x28], esi
mov byte [esp + 0x80], 9
mov ecx, dword [esp + 0x34]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x403033
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x403025
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403025
push eax
call fcn.00408440
mov dword [esp + 0x34], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x403018
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x30]
add ecx, 0x10
mov dword [esp + 0x28], ecx
jmp 0x403033
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x30]
call fcn.00408960
mov edx, dword [esp + 0x28]
push 0x2c
push 0
push edx
lea eax, [esp + 0x30]
push eax
call fcn.004167ae
test eax, eax
je 0x4032d9
inc edi
push 0x447b14
mov dword [esp + 0x34], edi
call fcn.00428d8c
add esp, 4
cmp edi, 1
jne 0x40311c
mov eax, dword [esp + 0x24]
mov ebx, dword [0x457fa0]
lea esi, [eax - 0x10]
add ebx, 0xfffffff0
cmp esi, ebx
je 0x4032bb
cmp dword [ebx + 0xc], 0
jl 0x40310d
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x40310d
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4030b2
cmp eax, dword [esi]
jne 0x4030b2
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x4030e6
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x403303
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004289fb
add esp, 0x10
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x4030ff
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
add edi, 0x10
mov dword [0x457fa0], edi
jmp 0x4032bb
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, 0x457fa0
jmp 0x4032b6
cmp edi, 2
jne 0x4031d8
mov eax, dword [esp + 0x24]
mov ebx, dword [0x457fa8]
lea esi, [eax - 0x10]
add ebx, 0xfffffff0
cmp esi, ebx
je 0x4032bb
cmp dword [ebx + 0xc], 0
jl 0x4031c9
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x4031c9
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x40316e
cmp eax, dword [esi]
jne 0x40316e
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4031a2
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x403303
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004289fb
add esp, 0x10
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x4031bb
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
add edi, 0x10
mov dword [0x457fa8], edi
jmp 0x4032bb
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, 0x457fa8
jmp 0x4032b6
cmp edi, 3
jne 0x40323f
mov ecx, dword [esp + 0x24]
mov esi, dword [0x457fac]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4032bb
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x403233
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403233
push eax
call fcn.00408440
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x403225
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [0x457fac], ebx
jmp 0x4032bb
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fac
jmp 0x4032b6
cmp edi, 4
jne 0x403258
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00428e67
add esp, 4
mov dword [0x457fb8], eax
jmp 0x4032bb
cmp edi, 5
jne 0x4032bb
mov ecx, dword [esp + 0x24]
mov esi, dword [0x457fb4]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4032bb
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4032ac
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4032ac
push eax
call fcn.00408440
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4032a1
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [0x457fb4], ebx
jmp 0x4032bb
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fb4
call fcn.00408960
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
push 0x2c
push edi
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.004167ae
test eax, eax
jne 0x40304e
mov eax, dword [0x457fb8]
cmp eax, 0x400
jge 0x40337a
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403308
push 0x80004005
call fcn.004017c0
call fcn.004016f0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov byte [esp + 0x80], 0xa
mov eax, dword [0x457fb8]
test eax, eax
jne 0x403336
push eax
push str.__d_MB
lea ecx, [esp + 0x38]
push ecx
jmp 0x403341
push eax
push str.__d_Byte
lea edx, [esp + 0x38]
push edx
call fcn.00401890
mov esi, dword [esp + 0x3c]
mov ebx, dword [ebp + 8]
add esp, 0xc
push esi
push 0x3f4
mov ecx, ebx
call fcn.0040e830
lea eax, [esi - 0x10]
mov byte [esp + 0x80], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x40344e
cmp eax, 0x100000
jge 0x4033cc
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40339b
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov byte [esp + 0x80], 0xb
fild dword [0x457fb8]
sub esp, 8
fmul qword [0x448b38]
fstp qword [esp]
push str.__0.1f_KB
jmp 0x403415
call fcn.00413fe6
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4033e6
push 0x80004005
call fcn.004017c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov byte [esp + 0x80], 0xc
fild dword [0x457fb8]
sub esp, 8
fmul qword [0x448b30]
fstp qword [esp]
push str.__0.2f_MB
lea ecx, [esp + 0x3c]
push ecx
call fcn.00401890
mov esi, dword [esp + 0x40]
mov ebx, dword [ebp + 8]
add esp, 0x10
push esi
push 0x3f4
mov ecx, ebx
call fcn.0040e830
lea eax, [esi - 0x10]
or ecx, 0xffffffff
lea edx, [eax + 0xc]
mov byte [esp + 0x80], 9
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40345a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x457fb4]
push ecx
push 0x447b44
call fcn.00428d8c
push 0x457fb4
lea edx, [esp + 0x3c]
push str.http:__down.downrealm.com_d_img_
push edx
call fcn.00408120
mov eax, dword [eax]
add esp, 0x14
push 0
push 0
push str.C:__abcd.jpg
push eax
push 0
call sub.urlmon.dll_URLDownloadToFileA
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4034b5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [esp + 0x34], esp
push str.C:_abcd.jpg
call fcn.00408a90
push ebx
call fcn.00404240
mov ecx, dword [0x457fac]
push ecx
push 0x3f3
mov ecx, ebx
call fcn.0040e830
mov edx, dword [0x457fb8]
mov eax, dword [0x457fa8]
mov ecx, dword [0x457fa0]
push edx
push eax
push ecx
push str.mainProgram_id___s__title___s__size___d_n
call fcn.00428d8c
mov edx, dword [ebx + 0x78]
push edx
push 0x447be8
call fcn.00428d8c
mov ecx, dword [ebx + 0x78]
mov esi, dword [0x457fbc]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
add esp, 0x18
cmp eax, esi
je 0x403571
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x403562
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403562
push eax
call fcn.00408440
mov dword [esp + 0x34], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x403553
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x30]
add ecx, 0x10
mov dword [0x457fbc], ecx
jmp 0x403571
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fbc
call fcn.00408960
push 0x447c20
lea edx, [esp + 0x34]
push 0x457fa8
push edx
call fcn.00408040
add esp, 0xc
mov byte [esp + 0x80], 0xd
mov eax, dword [eax]
push eax
mov ecx, ebx
call fcn.0040e8f1
mov byte [esp + 0x80], 9
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4035c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 8
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4035ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 7
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403612
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 5
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40363a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 3
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403662
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x40]
mov byte [esp + 0x80], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403687
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 1
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4036af
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x80], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4036d7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x80], 0xffffffff
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403702
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4