Function at 0x45f540
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x589898
mov eax, dword fs:[0]
push eax
sub esp, 0x34
push ebx
push esi
push edi
mov eax, dword [0x6606f4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
lea ecx, [ebp - 0xd]
mov dword [ebp - 4], 1
call fcn.0041fb20
mov byte [ebp - 4], 2
call fcn.0046ef71
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45f597
push 0x80004005
call fcn.00401010
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 3
call fcn.0046ef71
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45f5c4
push 0x80004005
call fcn.00401010
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x14], eax
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x24]
mov byte [ebp - 4], 4
test eax, eax
je 0x45f5f1
push eax
call fcn.0046dd9e
add esp, 4
mov dword [esi + 0x24], 0
mov ecx, dword [edi + 0x78]
push ecx
call fcn.0046dda9
mov dword [esi + 0x24], eax
mov edx, dword [edi + 0x78]
push edx
push 0xff
push eax
call fcn.0056c7b0
mov eax, dword [esi + 0x24]
add esp, 0x10
push 0
push 0
push 0xff
push eax
mov eax, dword [ebp + 0x10]
push ecx
add eax, 0xfffffff0
mov dword [ebp + 8], esp
mov ebx, esp
push eax
call fcn.00401e60
add eax, 0x10
mov dword [ebx], eax
mov ecx, dword [edi + 0x78]
add esp, 4
push ecx
lea ecx, [ebp - 0xd]
call fcn.00420510
mov dword [esi + 8], eax
test eax, eax
js 0x460026
mov ecx, dword [edi + 0x78]
cmp eax, ecx
jg 0x460026
cmp eax, 0x6000
jle 0x45f7b9
mov edx, dword [edi + 0x7c]
mov eax, dword [esi + 0x24]
sub ecx, edx
add eax, edx
mov edx, dword [edi + 0x80]
cmp ecx, 4
jb 0x45f68c
mov ebx, dword [edx]
cmp ebx, dword [eax]
jne 0x45f6c0
sub ecx, 4
add eax, 4
add edx, 4
cmp ecx, 4
jae 0x45f678
test ecx, ecx
je 0x45f7b9
mov bl, byte [eax]
cmp bl, byte [edx]
jne 0x45f6c0
cmp ecx, 1
jbe 0x45f7b9
mov bl, byte [eax + 1]
cmp bl, byte [edx + 1]
jne 0x45f6c0
cmp ecx, 2
jbe 0x45f7b9
mov al, byte [eax + 2]
cmp al, byte [edx + 2]
je 0x45f7b9
push 0xe8
call fcn.0046ee85
test eax, eax
je 0x45f6dc
push 0xe8
push eax
lea ecx, [ebp - 0x14]
call fcn.004015f0
mov ecx, dword [edi + 0x70]
mov ebx, dword [ebp - 0x14]
push ecx
lea edx, [ebp - 0x18]
push ebx
push edx
call fcn.00403ab0
mov edi, dword [ebp - 0x18]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
lea eax, [ebx - 0x10]
add esp, 0x18
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45f72b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45f74b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45f77a
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45f7a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffe
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esi + 0x24]
mov ecx, dword [edi + 0x20]
lea ebx, [ecx + eax - 4]
push ebx
add ecx, 0xfffffffc
push ecx
push eax
lea ecx, [ebp - 0xd]
call fcn.0041fca0
test eax, eax
jns 0x45f8d0
push 0x97
call fcn.0046ee85
test eax, eax
je 0x45f7f5
push 0x97
push eax
lea ecx, [ebp - 0x18]
call fcn.004015f0
mov ebx, dword [ebp - 0x18]
push 0xfffffffffffffffd
lea ecx, [ebp - 0x14]
push ebx
push ecx
call fcn.00403ab0
mov edi, dword [ebp - 0x14]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
lea eax, [edi - 0x10]
add esp, 0x18
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x45f842
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45f862
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45f891
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45f8b7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffd
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebx]
mov dword [0x5eb348], ecx
mov eax, dword [esi + 0x24]
add eax, dword [edi + 0x20]
mov ecx, dword [eax - 0x54]
mov edx, ecx
and edx, 0xffff0000
cmp edx, 0xcaca0000
jne 0x45f8fe
cmp cx, 0x32
jae 0x45f8fe
mov ecx, 0x40
jmp 0x45f900
xor ecx, ecx
sub eax, ecx
mov ecx, dword [eax - 0x14]
mov dword [0x5eb38c], ecx
mov edx, dword [eax - 0x10]
mov dword [0x5eb390], edx
mov edx, dword [eax - 0xc]
mov dword [0x5eb394], edx
mov eax, dword [eax - 8]
mov dword [0x5eb398], eax
mov edx, dword [edi + 0x20]
mov eax, dword [esi + 0x24]
mov edx, dword [edx + eax - 4]
mov dword [0x5eb39c], edx
mov eax, dword [edi + 0x20]
mov edx, dword [esi + 0x24]
mov dword [eax + edx + 4], ecx
mov ecx, dword [0x5eb390]
mov dword [eax + edx + 8], ecx
lea eax, [eax + edx + 4]
mov edx, dword [0x5eb394]
mov dword [eax + 8], edx
mov ecx, dword [0x5eb398]
mov dword [eax + 0xc], ecx
mov edx, dword [0x5eb39c]
mov dword [eax + 0x10], edx
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x20]
add ecx, dword [esi + 0x24]
mov dword [esi + 4], eax
shl eax, 0xa
mov dword [esi + 8], eax
mov eax, dword [esi + 4]
mov dword [ecx], eax
mov eax, dword [0x5eb394]
mov ecx, eax
shr eax, 0x10
movzx eax, al
shr ecx, 0x18
shl ecx, 8
add eax, ecx
mov word [esi + 0x1c], ax
movzx eax, ax
push eax
call fcn.00421340
mov ecx, dword [esi + 0x24]
mov word [esi + 0x1c], ax
mov eax, dword [edi + 0x20]
mov edx, dword [eax + ecx + 0x10]
mov dword [0x5eb34c], edx
mov eax, dword [edi + 0x20]
mov ecx, dword [esi + 0x24]
add esp, 4
push eax
push ecx
lea ecx, [ebp - 0xd]
call fcn.0041fd30
test eax, eax
jns 0x45fac7
push 0x97
call fcn.0046ee85
test eax, eax
je 0x45f9ec
push 0x97
push eax
lea ecx, [ebp - 0x18]
call fcn.004015f0
mov ebx, dword [ebp - 0x18]
push 0xfffffffffffffffc
lea edx, [ebp - 0x14]
push ebx
push edx
call fcn.00403ab0
mov edi, dword [ebp - 0x14]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
lea eax, [edi - 0x10]
add esp, 0x18
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fa39
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fa59
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45fa88
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45faae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffc
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [ebp - 0x2c]
call fcn.00478cbb
mov ecx, dword [ebp + 0x14]
push 0
push 0x1001
push ecx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 5
call fcn.00479143
test eax, eax
jne 0x45fbf1
push 0x97
call fcn.0046ee85
test eax, eax
je 0x45fb0a
push 0x97
push eax
lea ecx, [ebp - 0x18]
call fcn.004015f0
mov ebx, dword [ebp - 0x18]
push 0xfffffffffffffffb
lea edx, [ebp - 0x14]
push ebx
push edx
call fcn.00403ab0
mov edi, dword [ebp - 0x14]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
add esp, 0x18
lea ecx, [ebp - 0x2c]
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 4
call fcn.00478deb
lea eax, [edi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fb63
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fb83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45fbb2
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fbd8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffb
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [edi + 0x20]
mov ebx, dword [esi + 0x24]
add eax, 0x18
cdq
and edx, 3
add eax, edx
sar eax, 2
mov ecx, 0x55
test eax, eax
jle 0x45fc18
lea esp, [esp]
add ecx, dword [ebx]
add ebx, 4
dec eax
jne 0x45fc10
mov dword [ebx], ecx
mov ecx, dword [edi + 0x20]
mov edx, dword [esi + 0x24]
add ecx, 0x1c
push ecx
push edx
lea ecx, [ebp - 0x2c]
call fcn.004789f2
lea ecx, [ebp - 0x2c]
call fcn.00478c56
cmp dword [ebp + 0xc], 0
je 0x45ff69
lea ecx, [ebp - 0x40]
call fcn.00478cbb
mov byte [ebp - 4], 6
call fcn.0046ef71
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45fc65
push 0x80004005
call fcn.00401010
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp + 0xc], eax
mov byte [ebp - 4], 7
call fcn.0046ef71
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45fc92
push 0x80004005
call fcn.00401010
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp + 8], ebx
lea ecx, [ebp + 0x14]
push ecx
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 8
call fcn.00402290
push 0x599228
lea ecx, [ebp + 0xc]
call fcn.00403ef0
push 2
push 0x5a06e4
lea ecx, [ebp + 0xc]
call fcn.00401f80
mov edx, dword [ebp + 0xc]
push 0
push 0x1001
push edx
lea ecx, [ebp - 0x40]
call fcn.00479143
test eax, eax
jne 0x45fe3f
push 0x98
call fcn.0046ee85
test eax, eax
je 0x45fd04
push 0x98
push eax
lea ecx, [ebp - 0x18]
call fcn.004015f0
mov eax, dword [esi + 8]
mov ecx, dword [ebp - 0x18]
push eax
push ecx
lea edx, [ebp - 0x14]
push edx
call fcn.00403ab0
mov edi, dword [ebp - 0x14]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
lea eax, [ebx - 0x10]
add esp, 0x18
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fd53
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xc]
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 0x45fd76
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 5
call fcn.00478deb
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 4
call fcn.00478deb
lea eax, [edi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fdae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fdd1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45fe00
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45fe26
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0xfffffffa
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [edi + 0x20]
lea ecx, [eax + 0x1c]
xor ebx, ebx
test ecx, ecx
jle 0x45fee1
nop
test ebx, ebx
jne 0x45fe7d
push 7
push str._r_n
lea ecx, [ebp + 8]
call fcn.004016b0
mov edx, dword [esi + 0x24]
movzx eax, byte [edx]
push eax
lea ecx, [ebp - 0x14]
push str.0x_.2X_
push ecx
call fcn.00403ab0
add esp, 0xc
jmp 0x45fec2
mov edx, dword [esi + 0x24]
add eax, 0x1b
cmp ebx, eax
movzx eax, byte [ebx + edx]
lea ecx, [ebp - 0x14]
push eax
jne 0x45fe96
push str.0x_.2X
jmp 0x45fe9b
push str.0x_.2X_
push ecx
call fcn.00403ab0
mov edx, ebx
add esp, 0xc
and edx, 0x8000000f
jns 0x45feb3
dec edx
or edx, 0xfffffff0
inc edx
jne 0x45fec2
push 0x5a06c4
lea ecx, [ebp + 8]
call fcn.00402560
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp + 8]
call fcn.00401f80
mov eax, dword [edi + 0x20]
inc ebx
lea ecx, [eax + 0x1c]
cmp ebx, ecx
jl 0x45fe50
push 3
push 0x5a06c0
lea ecx, [ebp + 8]
call fcn.00401f80
mov esi, dword [ebp + 8]
cmp dword [esi - 4], 1
mov edi, dword [esi - 0xc]
jle 0x45ff08
push edi
lea ecx, [ebp + 8]
call fcn.00401140
mov esi, dword [ebp + 8]
push edi
push esi
lea ecx, [ebp - 0x40]
call fcn.004789f2
lea ecx, [ebp - 0x40]
call fcn.00478c56
lea eax, [esi - 0x10]
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45ff3a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp + 0xc]
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 0x45ff5d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 5
call fcn.00478deb
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 4
call fcn.00478deb
mov eax, dword [ebp - 0x14]
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 0x45ff98
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45ffbb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x45ffea
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x460010
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0x97
call fcn.0046ee85
test eax, eax
je 0x460042
push 0x97
push eax
lea ecx, [ebp - 0x18]
call fcn.004015f0
mov ebx, dword [ebp - 0x18]
push 0xffffffffffffffff
lea ecx, [ebp - 0x14]
push ebx
push ecx
call fcn.00403ab0
mov edi, dword [ebp - 0x14]
push 0
push edi
call fcn.0043ed40
mov eax, dword [esi + 0x24]
push eax
call fcn.0046dd9e
lea eax, [edi - 0x10]
add esp, 0x18
mov dword [esi + 0x24], 0
mov byte [ebp - 4], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46008f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4600af
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xd]
mov byte [ebp - 4], 1
call fcn.0046c150
mov eax, dword [ebp + 0x10]
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 0x4600de
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 dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x460104
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
or eax, 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10