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

Disassembly:
sub esp, 0xb0
push ebx
push ebp
mov ebp, ecx
push esi
push edi
mov dword [esp + 0x34], ebp
lea esi, [ebp + 0x1c]
mov ecx, esi
call fcn.0043a8a0
push ecx
mov eax, esp
lea ecx, [esp + 0xac]
push esi
mov dword [eax], 2
call fcn.00466f70
lea eax, [ebp + 0x18]
push eax
lea ecx, [esp + 0x50]
call fcn.0040ca10
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x54]
je 0x40f5f9
push eax
lea eax, [esp + 0xac]
push eax
call fcn.004278c0
mov eax, dword [esp + 0x58]
add esp, 8
add eax, 4
mov dword [esp + 0x50], eax
cmp eax, dword [esp + 0x54]
jne 0x40f5d7
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
test eax, eax
je 0x40f61b
cmp eax, 0xffffffff
je 0x40f645
mov eax, dword [esp + 0x4c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x40f645
mov esi, dword [esp + 0x4c]
lea ecx, [esp + 0x4c]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.004037e0
push esi
call fcn.00430ae0
add esp, 4
mov eax, dword [ebp + 0x10]
cmp dword [eax + 4], 0
jne 0x40f65c
cmp dword [esp + 0xc4], 0
je 0x41001e
mov ecx, dword [eax]
test ecx, ecx
je 0x40f683
cmp ecx, 0xffffffff
je 0x40f66a
lock inc dword [eax]
mov edi, dword [ebp + 0x10]
mov ebp, edi
mov dword [esp + 0x48], edi
mov ebx, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], edi
jmp 0x40f6d0
call fcn.004667e0
mov edi, eax
mov eax, dword [ebp + 0x10]
mov ebx, edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x18], ebx
mov ebp, ebx
mov dword [esp + 0x2c], ebx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x14], ebx
test ecx, ecx
je 0x40f6d0
push edi
call fcn.0040d270
mov dword [edi + 0xc], eax
lea edx, [ebx + 8]
mov ecx, dword [eax]
and ecx, 3
or ecx, edx
mov dword [eax], ecx
mov ecx, edi
call fcn.00466d90
mov dword [esp + 0x18], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], ebx
mov esi, dword [esp + 0x34]
add esi, 4
mov ecx, esi
call fcn.0043a8a0
mov ecx, dword [esp + 0x34]
lea ecx, [ecx + 8]
call fcn.0043a8a0
mov eax, dword [esp + 0x34]
add eax, 0xc
mov ecx, eax
mov dword [esp + 0x3c], eax
call fcn.0043a8a0
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x30], 0x724bc0
mov eax, dword [ecx + 0x10]
mov dword [ecx + 0x10], 0x724bc0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
call fcn.0040cb40
lea ecx, [esp + 0x30]
call fcn.0040cb40
push ecx
mov eax, esp
mov dword [esp + 0x28], 0x724bc0
push esi
lea ecx, [esp + 0x80]
mov dword [eax], 2
call fcn.00466f70
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp dword [eax + 0xc], ecx
je 0x40f75a
mov esi, dword [esp + 0x2c]
mov esi, dword [esi + 0x14]
jmp 0x40f763
mov esi, dword [esp + 0x14]
mov ebp, ebx
add esi, 8
lea eax, [ebp + 8]
mov dword [esp + 0x40], eax
cmp esi, eax
je 0x40fa02
mov edi, eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ecx
mov ecx, esi
call fcn.00466c00
lea ebp, [esi + 0xc]
cmp eax, edi
jne 0x40f78e
xor ebx, ebx
jmp 0x40f7fc
add eax, 0xc
push eax
mov dword [esp + 0x20], eax
call fcn.0040e990
push ebp
mov ebx, eax
call fcn.0040e990
add esp, 8
cmp eax, ebx
je 0x40f7ae
xor ebx, ebx
jmp 0x40f7fc
mov ebx, dword [esp + 0x1c]
push ebx
push ebp
call fcn.0040cde0
add esp, 8
test al, al
je 0x40f7c7
mov ebx, 1
jmp 0x40f7fc
lea ecx, [ebx + 4]
lea eax, [ebp + 4]
push ecx
push eax
call fcn.0040cde0
add esp, 8
test al, al
je 0x40f7e2
mov ebx, 2
jmp 0x40f7fc
lea ecx, [ebx + 8]
lea eax, [ebp + 8]
push ecx
push eax
call fcn.0040cde0
add esp, 8
movzx ebx, al
neg ebx
sbb ebx, ebx
add ebx, 4
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x14], ebx
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [ebp + 4]
lea edx, [ebp + 8]
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], ecx
mov eax, dword [ecx]
test eax, eax
je 0x40f82b
cmp eax, 0xffffffff
je 0x40f82b
mov eax, dword [esp + 0x10]
lock inc dword [eax]
push edx
lea ecx, [esp + 0x14]
call fcn.0043a630
lea eax, [esp + 0x10]
push eax
call fcn.0040d650
mov ecx, dword [esp + 0x14]
add esp, 4
mov dword [esp + 0x18], eax
mov eax, dword [ecx]
test eax, eax
je 0x40f868
cmp eax, 0xffffffff
je 0x40f878
mov eax, dword [esp + 0x10]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x40f878
push 4
push 1
push dword [esp + 0x18]
call fcn.00425140
add esp, 0xc
lea ecx, [esp + 0x24]
call fcn.0040d530
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], 0
mov byte [esp + 0x44], 1
mov eax, dword [ecx + 0xc]
lea edx, [ecx + 8]
test eax, eax
je 0x40f909
mov edi, dword [esp + 0x38]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x1c], eax
cmp edx, dword [esp + 0x18]
jne 0x40f8b0
cmp dword [eax + 0x10], edi
setb dl
test dl, dl
jne 0x40f8c0
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 4]
jmp 0x40f8c3
mov eax, dword [eax + 8]
xor dl, 1
test eax, eax
jne 0x40f8a0
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x40]
mov byte [esp + 0x44], dl
test eax, eax
je 0x40f905
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
jne 0x40f8fa
mov edi, dword [esp + 0x38]
cmp edi, dword [eax + 0x10]
mov edi, dword [esp + 0x40]
setb dh
mov byte [esp + 0x44], dl
test dh, dh
je 0x40f925
mov edx, dword [esp + 0x1c]
push dword [esp + 0x44]
push edx
push 4
push 0x18
call fcn.00466820
mov ecx, dword [esp + 0x18]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 0x10], ecx
mov edx, dword [esp + 0x20]
mov dword [eax + 0x14], 0
lea eax, [ebx + 1]
cmp dword [esp + 0x28], eax
cmovb edx, eax
mov eax, dword [ebp + 0xc]
xor ebx, ebx
mov dword [esp + 0x20], edx
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
test ecx, ecx
jle 0x40f985
nop dword [eax]
push 3
lea ecx, [esp + 0x7c]
call fcn.00467530
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx + 8]
add edx, 0x10
add ecx, ebx
lea ecx, [edx + ecx*4]
push ecx
push eax
call fcn.004278c0
mov eax, dword [ebp + 0xc]
inc ebx
add esp, 8
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp ebx, ecx
jl 0x40f950
mov edx, dword [esp + 0x20]
cmp dword [esp + 0xc4], 0
je 0x40f999
sub edx, 2
je 0x40f9c9
sub edx, 1
je 0x40f9b1
push 8
lea ecx, [esp + 0x7c]
call fcn.00467530
lea ecx, [ebp + 8]
push ecx
push eax
call fcn.0043a580
add esp, 8
push 6
lea ecx, [esp + 0x7c]
call fcn.00467530
lea ecx, [ebp + 4]
push ecx
push eax
call fcn.0043a580
add esp, 8
push 7
lea ecx, [esp + 0x7c]
call fcn.00467530
push ebp
push eax
call fcn.0043a580
add esp, 8
lea ecx, [esp + 0x78]
push 1
call fcn.00467530
mov ecx, esi
call fcn.00466c00
mov ecx, dword [esp + 0x14]
mov esi, eax
cmp esi, edi
jne 0x40f774
mov edi, dword [esp + 0x48]
lea ecx, [esp + 0x24]
call fcn.0040d530
mov esi, dword [esp + 0x24]
cmp dword [esi + 0xc], 0
je 0x40fa1a
mov esi, dword [esi + 0x14]
jmp 0x40fa1d
add esi, 8
push ecx
mov eax, esp
lea ecx, [esp + 0x94]
mov dword [eax], 2
mov eax, dword [esp + 0x38]
add eax, 8
push eax
call fcn.00466f70
lea ecx, [esp + 0x24]
call fcn.0040d530
mov eax, dword [esp + 0x24]
add eax, 8
cmp esi, eax
je 0x40fa88
nop
mov ebx, dword [esi + 0xc]
mov ecx, esi
mov ebp, dword [esi + 0x10]
call fcn.00466c00
push ebx
lea ecx, [esp + 0x94]
mov esi, eax
call fcn.004675c0
push ebp
mov ecx, eax
call fcn.004675c0
lea ecx, [esp + 0x24]
call fcn.0040d530
mov eax, dword [esp + 0x24]
add eax, 8
cmp esi, eax
jne 0x40fa50
cmp dword [esp + 0xc4], 1
jne 0x40ffc4
cmp dword [edi + 0xc], 0
mov esi, 0x724bc0
mov dword [esp + 0x10], esi
je 0x40fbd7
mov eax, dword [edi + 0x14]
mov dword [esp + 0x28], eax
lea eax, [edi + 8]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp edi, eax
je 0x40fbd7
lea ecx, [esp + 0x10]
call fcn.0040d5c0
mov esi, dword [esp + 0x10]
mov ebx, dword [esi + 0xc]
test ebx, ebx
je 0x40fb1f
xor ebp, ebp
lea esi, [edi + 0xc]
nop dword [eax]
lea eax, [ebx + 0xc]
push esi
push eax
call fcn.0043b320
add esp, 8
test eax, eax
js 0x40faf8
mov ebp, ebx
mov ebx, dword [ebx + 4]
jmp 0x40fafb
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x40fae0
mov esi, dword [esp + 0x10]
test ebp, ebp
je 0x40fb1f
lea eax, [ebp + 0xc]
push eax
lea eax, [edi + 0xc]
push eax
call fcn.0043b320
add esp, 8
test eax, eax
jns 0x40fbc1
lea ecx, [esp + 0x10]
call fcn.0040d5c0
mov esi, dword [esp + 0x10]
xor ebp, ebp
mov byte [esp + 0x20], 1
mov ebx, dword [esi + 0xc]
lea eax, [esi + 8]
test ebx, ebx
je 0x40fb90
lea esi, [edi + 0xc]
lea eax, [ebx + 0xc]
mov dword [esp + 0x1c], ebx
push esi
push eax
call fcn.0043b320
add esp, 8
test eax, eax
js 0x40fb5c
mov ebp, ebx
mov ebx, dword [ebx + 4]
jmp 0x40fb5f
mov ebx, dword [ebx + 8]
shr eax, 0x1f
xor al, 1
test ebx, ebx
jne 0x40fb40
mov esi, dword [esp + 0x10]
mov byte [esp + 0x20], al
test ebp, ebp
je 0x40fb8c
mov byte [esp + 0x20], al
lea eax, [ebp + 0xc]
push eax
lea eax, [edi + 0xc]
push eax
call fcn.0043b320
add esp, 8
test eax, eax
jns 0x40fbba
mov eax, dword [esp + 0x1c]
push dword [esp + 0x20]
mov ecx, esi
push eax
push 4
push 0x14
call fcn.00466820
mov ebp, eax
mov eax, dword [edi + 0xc]
mov dword [ebp + 0xc], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x40fbb6
cmp ecx, 0xffffffff
je 0x40fbb6
lock inc dword [eax]
mov esi, dword [esp + 0x10]
mov dword [ebp + 0x10], 0
inc dword [ebp + 0x10]
mov ecx, edi
call fcn.00466c00
mov edi, eax
cmp edi, dword [esp + 0x30]
jne 0x40fac3
mov ecx, dword [esi + 4]
cmp ecx, 0xc8
jge 0x40fbf4
cmp ecx, 0x3c
mov eax, 0x1f7
mov edx, 0x97
cmovl eax, edx
jmp 0x40fc28
cmp ecx, 0x9c4
jge 0x40fc11
cmp ecx, 0x2ee
mov eax, 0x138b
mov edx, 0x5e7
cmovl eax, edx
jmp 0x40fc28
cmp ecx, 0x2710
jge 0x40fc20
mov ecx, 0x3aa5
jmp 0x40fc2b
lea eax, [ecx + ecx*2]
cdq
sub eax, edx
sar eax, 1
movzx ecx, ax
cmp dword [esi + 0xc], 0
mov edi, 0x724bc0
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], edi
je 0x40fd96
mov eax, dword [esi + 0x14]
mov dword [esp + 0x28], eax
lea eax, [esi + 8]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp esi, eax
je 0x40fd96
movzx ebp, cx
mov dword [esp + 0x28], ebp
mov eax, dword [esi + 0xc]
mov ebx, dword [eax + 0xc]
add ebx, eax
mov eax, 0
je 0x40fcaa
mov cl, byte [ebx]
test cl, cl
je 0x40fcaa
nop dword [eax + eax]
shl eax, 4
lea ebx, [ebx + 1]
movzx ecx, cl
add eax, ecx
mov edx, eax
and edx, 0xf0000000
je 0x40fc9c
mov ecx, edx
shr ecx, 0x18
xor eax, ecx
mov cl, byte [ebx]
not edx
and eax, edx
test cl, cl
jne 0x40fc80
test eax, eax
jne 0x40fcaf
mov eax, 1
xor edx, edx
div ebp
mov eax, dword [edi]
mov ebx, edx
cmp eax, 1
je 0x40fd2b
test eax, eax
je 0x40fd2b
call fcn.004667e0
mov ecx, dword [edi + 0xc]
mov ebp, eax
test ecx, ecx
je 0x40fce3
push ebp
call fcn.0040d140
mov dword [ebp + 0xc], eax
lea edx, [ebp + 8]
mov ecx, dword [eax]
and ecx, 3
or edx, ecx
mov dword [eax], edx
mov eax, dword [edi]
test eax, eax
je 0x40fcfd
cmp eax, 0xffffffff
je 0x40fd1e
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
setne al
test al, al
jne 0x40fd1e
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x40fd15
call fcn.0040d470
push 4
push dword [edi + 0xc]
mov ecx, edi
call fcn.00466bb0
push edi
call fcn.004668a0
add esp, 4
mov ecx, ebp
mov edi, ebp
call fcn.00466d90
mov ebp, dword [esp + 0x28]
mov ecx, dword [edi + 0xc]
lea edx, [edi + 8]
mov byte [esp + 0x1c], 1
test ecx, ecx
je 0x40fd58
nop word [eax + eax]
cmp dword [ecx + 0xc], ebx
mov edx, ecx
setge byte [esp + 0x1c]
jl 0x40fd51
mov ecx, dword [ecx + 4]
jmp 0x40fd54
mov ecx, dword [ecx + 8]
test ecx, ecx
jne 0x40fd40
push dword [esp + 0x1c]
mov ecx, edi
push edx
push 4
push 0x14
call fcn.00466820
mov dword [eax + 0xc], ebx
mov ecx, dword [esi + 0xc]
mov dword [eax + 0x10], ecx
mov eax, dword [ecx]
test eax, eax
je 0x40fd7f
cmp eax, 0xffffffff
je 0x40fd7f
lock inc dword [ecx]
mov ecx, esi
call fcn.00466c00
mov esi, eax
cmp esi, dword [esp + 0x30]
jne 0x40fc63
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
movzx esi, ax
lea ebx, [esi + esi]
lea ebp, [ebx + 2]
push ebp
call fcn.0043bc60
push ecx
mov ecx, esp
mov dword [ecx], 2
mov ecx, dword [esp + 0x38]
add ecx, 0xc
push ecx
lea ecx, [esp + 0x68]
call fcn.00466f70
mov ecx, 2
mov eax, esi
mul ecx
mov ecx, 0xffffffff
cmovb eax, ecx
push eax
call fcn.005536f9
push ebx
push 0
push eax
mov dword [esp + 0x48], eax
call fcn.005555a0
add esp, 0x10
lea ecx, [esp + 0x60]
push dword [esp + 0x14]
call fcn.00467560
mov ecx, dword [esp + 0x64]
push 0
push ebp
mov eax, dword [ecx]
call dword [eax + 0x40]
push 0
lea ecx, [esp + 0x64]
call fcn.00467560
cmp dword [edi + 0xc], 0
mov ebx, 2
mov dword [esp + 0x18], ebx
je 0x40febb
mov esi, dword [edi + 0x14]
lea eax, [edi + 8]
mov dword [esp + 0x28], eax
cmp esi, eax
je 0x40febb
mov ecx, dword [esi + 0xc]
mov edi, ecx
mov edx, dword [esp + 0x38]
shr ebx, 1
mov dword [esp + 0x3c], ecx
mov word [edx + ecx*2], bx
nop word [eax + eax]
mov eax, dword [esi + 0x10]
lea ecx, [esp + 0x60]
mov ebx, 0xff
mov ebp, dword [eax + 0xc]
add ebp, eax
cmp dword [eax + 4], ebx
cmovb ebx, dword [eax + 4]
push ebx
call fcn.00467530
push ebx
push ebp
lea ecx, [esp + 0x68]
call fcn.00467c50
mov eax, dword [esp + 0x18]
mov ecx, esi
inc eax
add eax, ebx
mov dword [esp + 0x18], eax
call fcn.00466c00
mov ebp, dword [esp + 0x28]
mov esi, eax
cmp esi, ebp
je 0x40fe9a
cmp dword [esi + 0xc], edi
je 0x40fe50
mov ebx, dword [esp + 0x18]
test bl, 1
je 0x40feb3
push 0
lea ecx, [esp + 0x64]
call fcn.00467530
inc ebx
mov dword [esp + 0x18], ebx
cmp esi, ebp
jne 0x40fe37
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x64]
push 0
push 2
mov eax, dword [ecx]
call dword [eax + 0x40]
mov eax, dword [esp + 0x14]
xor esi, esi
movzx ebp, ax
test ebp, ebp
je 0x40fef7
mov edi, dword [esp + 0x38]
nop dword [eax]
movzx eax, word [edi + esi*2]
lea ecx, [esp + 0x60]
push eax
call fcn.00467560
inc esi
cmp esi, ebp
jl 0x40fee0
mov edi, dword [esp + 0x20]
push dword [esp + 0x38]
call fcn.005533c3
add esp, 4
cmp ebx, 0x20000
jbe 0x40ff3d
movaps xmm0, xmmword [0x58bee0]
lea eax, [esp + 0x4c]
push str.Releaser::squeeze:_Too_many_contexts
push eax
movups xmmword [esp + 0x54], xmm0
mov dword [esp + 0x64], 0x58bebc
call fcn.00457020
mov ecx, dword [esp + 0x3c]
add esp, 8
lea ecx, [ecx + 0xc]
call fcn.0043a8a0
lea ecx, [esp + 0x60]
call fcn.00467070
mov eax, dword [edi]
test eax, eax
je 0x40ff60
cmp eax, 0xffffffff
je 0x40ff81
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
setne al
test al, al
jne 0x40ff81
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x40ff78
call fcn.0040d470
push 4
push dword [edi + 0xc]
mov ecx, edi
call fcn.00466bb0
push edi
call fcn.004668a0
add esp, 4
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov esi, dword [esp + 0x10]
test eax, eax
je 0x40ffa3
cmp eax, 0xffffffff
je 0x40ffc4
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
setne al
test al, al
jne 0x40ffc4
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x40ffbb
call fcn.0040d4e0
push 4
push dword [esi + 0xc]
mov ecx, esi
call fcn.00466bb0
push esi
call fcn.004668a0
add esp, 4
lea ecx, [esp + 0x90]
call fcn.00467070
lea ecx, [esp + 0x78]
call fcn.00467070
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov esi, dword [esp + 0x24]
test eax, eax
je 0x40fffb
cmp eax, 0xffffffff
je 0x410015
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
setne al
test al, al
jne 0x410015
mov eax, dword [esi + 0xc]
test eax, eax
je 0x41000c
push 4
push eax
mov ecx, esi
call fcn.00466bb0
push esi
call fcn.004668a0
add esp, 4
lea ecx, [esp + 0x48]
call fcn.0040cb40
lea ecx, [esp + 0xa8]
call fcn.00467070
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 4