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

Disassembly:
push 0xffffffffffffffff
push 0x4e3b34
mov eax, dword fs:[0]
push eax
sub esp, 0xb4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x64a000]
xor eax, esp
push eax
lea eax, [esp + 0xc8]
mov dword fs:[0], eax
mov dword [esp + 0x1c], ecx
mov ebp, dword [esp + 0xe0]
xor ebx, ebx
mov dword [esp + 0x20], ebx
mov ecx, ebp
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], 0x80000000
mov dword [esp + 0x28], 0xffffffff
mov byte [esp + 0x1b], bl
mov byte [esp + 0x27], bl
call fcn.00430b90
test al, al
je 0x45c499
lea eax, [esp + 0xb8]
mov ecx, ebp
push eax
call fcn.0042eb60
mov ecx, dword [eax]
mov dword [esp + 0x34], ecx
mov ecx, ebp
mov eax, dword [eax + 4]
mov dword [esp + 0x38], eax
lea eax, [esp + 0xb8]
push eax
call fcn.00432710
mov byte [esp + 0x1b], 1
mov eax, dword [eax]
jmp 0x45c4f0
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
cmp edx, 0xffffff49
jl 0x45c4d8
jg 0x45c4b6
cmp eax, 0x611006e1
jb 0x45c4d8
cmp edx, 0xb6
jg 0x45c4d8
jl 0x45c4c7
cmp eax, 0x9f248054
ja 0x45c4d8
mov dword [esp + 0x34], eax
mov eax, edx
mov dword [esp + 0x38], eax
mov byte [esp + 0x1b], 1
jmp 0x45c4f9
mov esi, dword [esp + 0xe8]
mov ecx, esi
call fcn.00430ba0
test al, al
je 0x45d206
mov eax, dword [esi]
mov byte [esp + 0x27], 1
mov dword [esp + 0x28], eax
mov eax, 0x4ed20c
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0xdc]
xor ebp, ebp
or esi, 0xffffffff
mov dword [esp + 0xd0], 0
mov dword [esp + 0x30], ebp
mov edi, dword [ecx]
cmp dword [edi + 4], ebp
jle 0x45d1c1
jmp 0x45c530
mov eax, dword [edi + 0xc]
lea edx, [ebp*2]
add eax, edx
cmp word [eax + edi], 0x27
jne 0x45c5a6
lea eax, [esp + 0x30]
push eax
push ecx
lea eax, [esp + 0x44]
push eax
call fcn.0045ed20
add esp, 0xc
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 1
call fcn.00417e50
mov eax, dword [esp + 0x3c]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45c590
cmp ecx, 0xffffffff
je 0x45c59d
mov ecx, esi
lock xadd dword [eax], ecx
setne al
test al, al
jne 0x45c59d
mov eax, dword [esp + 0x3c]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
mov ebp, dword [esp + 0x30]
jmp 0x45d1ab
mov eax, dword [edi + 0xc]
add eax, edx
mov cx, word [eax + edi]
mov eax, dword [edi + 0xc]
add eax, edx
mov word [esp + 0x40], cx
lea edx, [ebp + 1]
mov esi, edx
mov dword [esp + 0x2c], edx
mov ax, word [eax + edi]
cmp esi, dword [edi + 4]
jge 0x45c5ed
mov ebp, dword [edi + 0xc]
mov edi, edi
lea edx, [esi*2]
add edx, ebp
cmp word [edx + edi], ax
jne 0x45c5e5
inc esi
cmp esi, dword [edi + 4]
jl 0x45c5d0
mov ebp, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
sub esi, ebp
cmp byte [esp + 0x1b], 0
mov dword [esp + 0x30], esi
je 0x45ca41
movzx eax, cx
cmp eax, 0x4d
je 0x45c864
cmp eax, 0x64
je 0x45c70b
cmp eax, 0x79
jne 0x45ca41
cmp esi, 4
jl 0x45c626
lea esi, [eax - 0x75]
jmp 0x45c631
cmp esi, 2
mov eax, 2
cmovge esi, eax
mov eax, esi
sub eax, 2
je 0x45c6af
sub eax, 2
je 0x45c654
push dword [esp + 0x40]
lea ecx, [esp + 0x18]
mov esi, 1
call fcn.00417f90
jmp case.default.0x45c888
lea ecx, [esp + 0x34]
call fcn.00433d30
xor ecx, ecx
test eax, eax
push 2
sets cl
cdq
add ecx, 4
push ecx
push 0xa
push 0xffffffffffffffff
push edx
push eax
lea eax, [esp + 0xc4]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 2
call fcn.00417e50
lea ecx, [esp + 0xac]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call fcn.00433d30
cdq
mov ecx, 0x64
idiv ecx
mov eax, edx
cdq
push edx
push eax
lea eax, [esp + 0xdc]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 3
call fcn.00417e50
lea ecx, [esp + 0xc4]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp esi, 4
mov dword [esp + 0x2c], 4
lea eax, [esp + 0x30]
lea ecx, [esp + 0x2c]
cmovge eax, ecx
mov esi, dword [eax]
lea eax, [esi - 1]
cmp eax, 3
ja case.default.0x45c888
jmp dword [eax*4 + 0x45d230]
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call fcn.0042ebc0
cdq
push edx
push eax
lea eax, [esp + 0xcc]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 8
call fcn.00417e50
lea ecx, [esp + 0xb4]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call fcn.0042ebc0
cdq
push edx
push eax
lea eax, [esp + 0x7c]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 9
call fcn.00417e50
lea ecx, [esp + 0x64]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 1
lea ecx, [esp + 0x38]
call fcn.0042ec10
mov ecx, dword [esp + 0xf0]
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.0045d2b0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xa
call fcn.00417e50
lea ecx, [esp + 0x94]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
lea ecx, [esp + 0x38]
call fcn.0042ec10
mov ecx, dword [esp + 0xf0]
push eax
lea eax, [esp + 0x74]
push eax
call fcn.0045d2b0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xb
call fcn.00417e50
lea ecx, [esp + 0x6c]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp esi, 4
mov dword [esp + 0x2c], 4
lea eax, [esp + 0x30]
lea ecx, [esp + 0x2c]
cmovge eax, ecx
mov esi, dword [eax]
lea eax, [esi - 1]
cmp eax, 3
ja case.default.0x45c888
jmp dword [eax*4 + 0x45d240]
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call fcn.00431120
cdq
push edx
push eax
lea eax, [esp + 0x64]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 4
call fcn.00417e50
mov eax, dword [esp + 0x4c]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45d195
cmp ecx, 0xffffffff
je case.default.0x45c888
or ecx, 0xffffffff
lock xadd dword [eax], ecx
setne al
test al, al
jne case.default.0x45c888
mov eax, dword [esp + 0x4c]
jmp 0x45d195
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call fcn.00431120
cdq
push edx
push eax
lea eax, [esp + 0x6c]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 5
call fcn.00417e50
mov eax, dword [esp + 0x54]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45d195
cmp ecx, 0xffffffff
je case.default.0x45c888
or ecx, 0xffffffff
lock xadd dword [eax], ecx
setne al
test al, al
jne case.default.0x45c888
mov eax, dword [esp + 0x54]
jmp 0x45d195
push 1
lea ecx, [esp + 0x38]
call fcn.00431120
mov ecx, dword [esp + 0xf0]
push eax
lea eax, [esp + 0x58]
push eax
call fcn.0045e5f0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 6
call fcn.00417e50
mov eax, dword [esp + 0x50]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45d195
cmp ecx, 0xffffffff
je case.default.0x45c888
or ecx, 0xffffffff
lock xadd dword [eax], ecx
setne al
test al, al
jne case.default.0x45c888
mov eax, dword [esp + 0x50]
jmp 0x45d195
push 0
lea ecx, [esp + 0x38]
call fcn.00431120
mov ecx, dword [esp + 0xf0]
push eax
lea eax, [esp + 0x50]
push eax
call fcn.0045e5f0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 7
call fcn.00417e50
mov eax, dword [esp + 0x48]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45d195
cmp ecx, 0xffffffff
je case.default.0x45c888
or ecx, 0xffffffff
lock xadd dword [eax], ecx
setne al
test al, al
jne case.default.0x45c888
mov eax, dword [esp + 0x48]
jmp 0x45d195
cmp byte [esp + 0x27], 0
je case.0x45ca62.66
movzx eax, cx
add eax, 0xffffffbf
cmp eax, 0x39
ja case.0x45ca62.66
movzx eax, byte [eax + 0x45d274]
jmp dword [eax*4 + 0x45d250]
cmp esi, 2
mov dword [esp + 0x2c], 2
lea ecx, [esp + 0x2c]
lea eax, [esp + 0x30]
cmovge eax, ecx
lea ecx, [esp + 0x28]
mov esi, dword [eax]
call fcn.00430a60
push dword [esp + 0xdc]
mov edi, eax
call fcn.0045fb30
add esp, 4
test al, al
je 0x45cab3
cmp edi, 0xc
jle 0x45caa9
sub edi, 0xc
jmp 0x45cab3
test edi, edi
mov eax, 0xc
cmove edi, eax
mov eax, esi
dec eax
je 0x45cb04
dec eax
jne case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
mov eax, edi
cdq
push edx
push eax
lea eax, [esp + 0x70]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xd
call fcn.00417e50
lea ecx, [esp + 0x58]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
mov eax, edi
cdq
push edx
push eax
lea eax, [esp + 0x8c]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xc
call fcn.00417e50
lea ecx, [esp + 0x74]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp esi, 2
mov dword [esp + 0x2c], 2
lea eax, [esp + 0x30]
lea ecx, [esp + 0x2c]
cmovge eax, ecx
mov esi, dword [eax]
mov eax, esi
dec eax
je 0x45cbc2
dec eax
jne case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00430a60
cdq
push edx
push eax
lea eax, [esp + 0xb4]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xf
call fcn.00417e50
lea ecx, [esp + 0x9c]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00430a60
cdq
push edx
push eax
lea eax, [esp + 0x94]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0xe
call fcn.00417e50
lea ecx, [esp + 0x7c]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp esi, 2
mov dword [esp + 0x2c], 2
lea eax, [esp + 0x30]
lea ecx, [esp + 0x2c]
cmovge eax, ecx
mov esi, dword [eax]
mov eax, esi
dec eax
je 0x45cc87
dec eax
jne case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.004310e0
cdq
push edx
push eax
lea eax, [esp + 0xd8]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x11
call fcn.00417e50
lea ecx, [esp + 0xc0]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.004310e0
cdq
push edx
push eax
lea eax, [esp + 0x9c]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x10
call fcn.00417e50
lea ecx, [esp + 0x84]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp esi, 2
mov dword [esp + 0x2c], 2
lea eax, [esp + 0x30]
lea ecx, [esp + 0x2c]
cmovge eax, ecx
mov esi, dword [eax]
mov eax, esi
dec eax
je 0x45cd4f
dec eax
jne case.default.0x45c888
push 2
push 2
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00431f00
cdq
push edx
push eax
lea eax, [esp + 0xbc]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x13
call fcn.00417e50
lea ecx, [esp + 0xa4]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00431f00
cdq
push edx
push eax
lea eax, [esp + 0xa4]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x12
call fcn.00417e50
lea ecx, [esp + 0x8c]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp edx, dword [edi + 4]
jge 0x45cdb8
mov eax, dword [edi + 0xc]
mov esi, 2
lea eax, [eax + edx*2]
cmp word [eax + edi], 0x70
je 0x45cdbd
mov esi, 1
lea ecx, [esp + 0x28]
call fcn.00430a60
mov ecx, dword [esp + 0xec]
cmp eax, 0xc
jge 0x45ce07
lea eax, [esp + 0x70]
push eax
call fcn.0045ba00
lea ecx, [esp + 0x68]
mov byte [esp + 0xd0], 0x14
push ecx
or ebx, 2
mov ecx, eax
mov dword [esp + 0x24], ebx
call fcn.0041e920
mov dword [esp + 0xd0], 0x15
or ebx, 4
jmp 0x45ce3d
lea eax, [esp + 0x60]
push eax
call fcn.0045eb30
lea ecx, [esp + 0x5c]
mov dword [esp + 0xd0], 0x16
push ecx
or ebx, 8
mov ecx, eax
mov dword [esp + 0x24], ebx
call fcn.0041e920
mov dword [esp + 0xd0], 0x17
or ebx, 0x10
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x24], ebx
call fcn.00417e50
test bl, 0x10
je 0x45ce60
and ebx, 0xffffffef
lea ecx, [esp + 0x5c]
mov dword [esp + 0x20], ebx
call fcn.00467a00
test bl, 8
je 0x45ce75
and ebx, 0xfffffff7
lea ecx, [esp + 0x60]
mov dword [esp + 0x20], ebx
call fcn.00467a00
test bl, 4
je 0x45ce8a
and ebx, 0xfffffffb
lea ecx, [esp + 0x68]
mov dword [esp + 0x20], ebx
call fcn.00467a00
mov dword [esp + 0xd0], 0
test bl, 2
je case.default.0x45c888
and ebx, 0xfffffffd
lea ecx, [esp + 0x70]
mov dword [esp + 0x20], ebx
call fcn.00467a00
jmp case.default.0x45c888
cmp edx, dword [edi + 4]
jge 0x45ceca
mov eax, dword [edi + 0xc]
mov esi, 2
lea eax, [eax + edx*2]
cmp word [eax + edi], 0x50
je 0x45cecf
mov esi, 1
lea ecx, [esp + 0x28]
call fcn.00430a60
mov ecx, dword [esp + 0xec]
cmp eax, 0xc
jge 0x45cf1f
lea eax, [esp + 0x90]
push eax
call fcn.0045ba00
lea ecx, [esp + 0x88]
mov byte [esp + 0xd0], 0x18
push ecx
or ebx, 0x20
mov ecx, eax
mov dword [esp + 0x24], ebx
call fcn.0041e940
mov dword [esp + 0xd0], 0x19
or ebx, 0x40
jmp 0x45cf5e
lea eax, [esp + 0x80]
push eax
call fcn.0045eb30
lea ecx, [esp + 0x78]
mov dword [esp + 0xd0], 0x1a
push ecx
or ebx, 0x80
mov ecx, eax
mov dword [esp + 0x24], ebx
call fcn.0041e940
mov dword [esp + 0xd0], 0x1b
or ebx, 0x100
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x24], ebx
call fcn.00417e50
test ebx, 0x100
je 0x45cf87
and ebx, 0xfffffeff
lea ecx, [esp + 0x78]
mov dword [esp + 0x20], ebx
call fcn.00467a00
test bl, bl
jns 0x45cfa1
and ebx, 0xffffff7f
lea ecx, [esp + 0x80]
mov dword [esp + 0x20], ebx
call fcn.00467a00
test bl, 0x40
je 0x45cfb9
and ebx, 0xffffffbf
lea ecx, [esp + 0x88]
mov dword [esp + 0x20], ebx
call fcn.00467a00
mov dword [esp + 0xd0], 0
test bl, 0x20
je case.default.0x45c888
and ebx, 0xffffffdf
lea ecx, [esp + 0x90]
mov dword [esp + 0x20], ebx
call fcn.00467a00
jmp case.default.0x45c888
xor eax, eax
cmp esi, 3
setge al
lea esi, [eax*2 + 1]
mov eax, esi
dec eax
je 0x45d054
sub eax, 2
jne case.default.0x45c888
push 2
push 3
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00431180
cdq
push edx
push eax
lea eax, [esp + 0xb0]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x1d
call fcn.00417e50
lea ecx, [esp + 0x98]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
push 0
push 0xffffffffffffffff
push 0xa
push 0xffffffffffffffff
lea ecx, [esp + 0x38]
call fcn.00431180
cdq
push edx
push eax
lea eax, [esp + 0xb8]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.0045e240
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x1c
call fcn.00417e50
lea ecx, [esp + 0xa0]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
cmp byte [esp + 0x1b], 0
mov esi, 1
je 0x45d0f1
mov ecx, dword [esp + 0xe0]
lea eax, [esp + 0xa8]
push eax
call fcn.004327d0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x1e
call fcn.00417e50
lea ecx, [esp + 0xa8]
mov byte [esp + 0xd0], 0
call fcn.00467a00
jmp case.default.0x45c888
lea eax, [esp + 0xb8]
push eax
call fcn.0042e930
add esp, 4
lea ecx, [esp + 0xb0]
mov byte [esp + 0xd0], 0x1f
push ecx
mov ecx, eax
call fcn.004327d0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x20
call fcn.00417e50
lea ecx, [esp + 0xb0]
call fcn.00467a00
lea ecx, [esp + 0xb8]
mov byte [esp + 0xd0], 0
call fcn.0042d7e0
jmp case.default.0x45c888
push dword [esp + 0x40]
lea ecx, [esp + 0x48]
push esi
call fcn.00417680
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xd4], 0x21
call fcn.00417e50
mov eax, dword [esp + 0x44]
mov byte [esp + 0xd0], 0
mov ecx, dword [eax]
test ecx, ecx
je 0x45d195
cmp ecx, 0xffffffff
je case.default.0x45c888
or ecx, 0xffffffff
lock xadd dword [eax], ecx
setne al
test al, al
jne case.default.0x45c888
mov eax, dword [esp + 0x44]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
add ebp, esi
or esi, 0xffffffff
mov dword [esp + 0x30], ebp
mov ecx, dword [esp + 0xdc]
mov edi, dword [ecx]
cmp ebp, dword [edi + 4]
jl 0x45c530
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0xd8]
mov ecx, dword [0x4ed20c]
mov dword [esi], eax
mov eax, 0x4ed20c
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x45d1f5
cmp ecx, 0xffffffff
je 0x45d202
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x45d202
mov eax, dword [esp + 0x14]
push 4
push 2
push eax
call fcn.00413640
add esp, 0xc
mov eax, esi
jmp 0x45d213
mov eax, dword [esp + 0xd8]
mov dword [eax], 0x4ed20c
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc0
ret 0x18