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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0xf0
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x9c], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x98], edx
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x78], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x7c], edx
mov edx, dword [ebp + 0x24]
mov dword [esp + 0xa8], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0xac], edx
mov edx, dword [ebp + 0x2c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x74], edx
xor edx, edx
and eax, 8
mov dword [esp + 0x68], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x4c], eax
jne 0x47838b
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 0x14]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 0xc], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 4]
mov edx, dword [ebx + 0x6c]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00487e10
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x9c]
xor edx, edx
xor ebx, ebx
mov esi, dword [esp + 0x74]
mov ecx, dword [eax + 0x64]
mov eax, 1
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
mov ebx, dword [esp + 0x70]
mov dword [esp + 0xa0], eax
neg eax
mov dword [esp + 0xa4], edx
adc edx, 0
and ebx, eax
or eax, 0xffffffff
neg edx
and esi, edx
mov edx, eax
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x4783e0
mov edx, eax
xor eax, eax
not eax
not edx
mov dword [esp + 0x40], eax
and eax, dword [esp + 0x78]
mov dword [esp + 0x38], eax
mov eax, ebx
or eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x44], edx
and edx, dword [esp + 0x7c]
neg eax
mov dword [esp + 0x3c], edx
mov edx, esi
or edx, dword [esp + 0x3c]
mov ebx, eax
and eax, 0x8000
mov dword [esp + 0x34], edx
and ebx, 0x7fff
test edi, edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ebx
setne byte [esp + 0x4b]
test ecx, ecx
je 0x478682
cmp byte [esp + 0x4b], 0
je 0x478682
mov ecx, dword [edi + 0x10]
mov eax, ebx
test byte [edi + 0x14], 2
jne 0x478457
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0xac]
xor edx, edx
sub eax, ecx
cmp dword [esp + 0xa8], eax
mov esi, edx
sbb ebx, edx
mov ebx, dword [esp + 0xa8]
cmovb esi, dword [esp + 0xac]
cmovae ebx, eax
mov dword [esp + 0x58], ebx
test esi, esi
jne 0x47848f
test ebx, ebx
je 0x478694
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0xa4]
sub eax, dword [esp + 0x38]
sbb edx, dword [esp + 0x3c]
and edx, dword [esp + 0x44]
and eax, dword [esp + 0x40]
mov dword [esp + 0xa4], edx
cmp dword [esp + 0xa4], 0
mov dword [esp + 0xa0], eax
jne 0x4784d3
cmp dword [esp + 0xa0], 0
je 0x4786a6
mov ebx, dword [esp + 0xa0]
mov eax, esi
cmp dword [esp + 0x58], ebx
sbb eax, dword [esp + 0xa4]
mov eax, dword [esp + 0x58]
cmovae esi, dword [esp + 0xa4]
mov edx, dword [edi + 0xc]
cmovae eax, ebx
cmp dword [esp + 0x4c], 0
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa0], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
jne 0x4785a4
add eax, 0xffffffff
adc edx, 0xffffffff
add eax, ecx
mov ecx, dword [esp + 0x8c]
adc edx, 0
cmp dword [esp + 0x88], eax
sbb ecx, edx
jb 0x4785a4
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0xa4]
add ebx, eax
adc esi, edx
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x44], esi
cmp dword [esp + 0x40], ebx
mov ecx, dword [esp + 0x44]
sbb ecx, dword [esp + 0x8c]
jb 0x4785a4
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x8c]
sub ebx, eax
sbb esi, edx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], esi
cmp dword [esp + 0xa4], 0
jne 0x4785a4
cmp dword [esp + 0xa0], 0
je 0x4786a6
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
test eax, eax
jne 0x4786a6
xor ecx, ecx
mov eax, dword [esp + 0xa0]
add dword [edi + 0x10], eax
mov dword [esp + 8], edi
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462cbe
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
test byte [edi + 0x14], 2
jne 0x478654
mov eax, dword [esp + 0xa0]
xor edx, edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov edx, dword [edi + 4]
mov eax, dword [edi]
add eax, dword [edi + 0x10]
adc edx, 0
sub eax, dword [esp + 0xa0]
sbb edx, dword [esp + 0xa4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
jne 0x479ac5
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0xa4]
add dword [esp + 0x78], ebx
adc dword [esp + 0x7c], esi
sub dword [esp + 0xa8], ebx
sbb dword [esp + 0xac], esi
add dword [esp + 0x30], ebx
adc dword [esp + 0x34], esi
jmp 0x4786a6
xor eax, eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
jmp 0x4786a6
mov eax, dword [esp + 0x58]
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa0], eax
cmp dword [ebp + 0x14], 0
je 0x478b1b
mov eax, dword [esp + 0x9c]
mov ecx, dword [eax + 0x64]
test ecx, ecx
je 0x47886a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0x10]
test byte [eax + 0x14], 2
je 0x4786d4
mov eax, dword [esp + 0x70]
jmp 0x4786d8
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0xa8]
sub eax, edx
xor edx, edx
mov esi, edx
cmp eax, ebx
mov ebx, edx
sbb ebx, dword [esp + 0xac]
mov ebx, dword [esp + 0xa8]
cmovae esi, dword [esp + 0xac]
cmovb ebx, eax
test esi, esi
jne 0x47870e
test ebx, ebx
je 0x47886a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp + 0x58], eax
mov eax, 0xffffffff
mov dword [esp + 0x5c], edx
mov edx, eax
shl eax, cl
test cl, 0x20
je 0x478731
mov edx, eax
xor eax, eax
not edx
and edx, dword [esp + 0x5c]
not eax
and eax, dword [esp + 0x58]
mov dword [esp + 0xa4], edx
cmp dword [esp + 0xa4], 0
mov dword [esp + 0xa0], eax
jne 0x478763
cmp dword [esp + 0xa0], 0
je 0x47886a
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
test eax, eax
jne 0x479ac5
mov ecx, dword [esp + 0xa0]
mov eax, esi
cmp ebx, ecx
sbb eax, dword [esp + 0xa4]
mov eax, ebx
cmovae esi, dword [esp + 0xa4]
cmovae eax, ecx
mov dword [esp + 0xa4], esi
mov esi, dword [ebp + 0x14]
mov dword [esp + 0xa0], eax
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xa0]
sub dword [esi + 8], eax
sbb dword [esi + 0xc], edx
sub dword [esi], eax
mov eax, dword [esp + 0xa0]
sbb dword [esi + 4], edx
add dword [esi + 0x10], eax
xor eax, eax
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462cbe
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0x14]
test byte [eax + 0x14], 2
jne 0x47884e
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
jne 0x479ac5
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0xa4]
sub dword [esp + 0xa8], ebx
sbb dword [esp + 0xac], esi
cmp dword [ebp + 0x14], 0
je 0x478b1b
cmp byte [esp + 0x4b], 0
je 0x478b1b
mov eax, dword [edi + 0x14]
mov esi, dword [ebp + 0x14]
mov edx, eax
xor edx, dword [esi + 0x14]
and dl, 2
je 0x4788a4
mov ecx, dword [edi + 0x14]
and ecx, 2
je 0x478b28
mov eax, dword [esp + 0x70]
jmp 0x478b3a
and eax, 2
test byte [esp + 0x98], 2
je 0x4788b5
test eax, eax
jne 0x47888f
test byte [esp + 0x98], 4
je 0x4788c5
test eax, eax
jne 0x4788d7
jmp 0x47888f
test eax, eax
jne 0x4788d7
mov edx, dword [esp + 0x98]
not edx
and dl, 3
jne 0x47888f
mov edx, dword [ebp + 0x14]
xor ecx, ecx
mov edx, dword [edx + 0x10]
add edx, dword [edi + 0x10]
adc ecx, 0
add edx, dword [esp + 0xa8]
adc ecx, dword [esp + 0xac]
test eax, eax
mov dword [esp + 0x58], edx
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x70]
cmove ecx, dword [esp + 0x6c]
xor edx, edx
mov eax, edx
cmp ecx, ebx
sbb eax, dword [esp + 0x5c]
jb 0x47888f
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
test eax, eax
jne 0x47888f
mov eax, dword [edi]
mov edx, dword [edi + 4]
add eax, dword [edi + 0x10]
mov ecx, eax
lea eax, [esp + 0xb8]
adc edx, 0
xor esi, esi
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb0]
mov ebx, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], esi
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
add eax, 1
mov dword [esp + 4], 3
adc edx, 0
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x9c]
sbb edx, ebx
mov dword [esp + 0x14], edx
mov dword [esp], eax
call fcn.0045cc34
test eax, eax
jne 0x47888f
mov eax, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xb8]
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0xbc]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x38], eax
add ebx, eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x3c], edx
adc esi, edx
cmp esi, dword [eax + 4]
jne 0x47888f
cmp ebx, dword [eax]
jne 0x47888f
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x44]
mov dword [esp], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov edx, dword [ebp + 8]
call fcn.00478258
test eax, eax
jne 0x479ac5
mov eax, dword [esp + 0x58]
xor ecx, ecx
mov dword [edi + 0x10], eax
mov dword [esp + 8], edi
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462cbe
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
lea eax, [esp + 0xc0]
mov dword [esp + 4], 7
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046264d
test eax, eax
jne 0x479ac5
xor edx, edx
mov dword [esp + 4], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462d96
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
movups xmm0, xmmword [edi]
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0x14]
movups xmmword [eax], xmm0
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
test byte [edi + 0x14], 2
jne 0x47967f
test byte [esp + 0x98], 1
je 0x47967f
xor eax, eax
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.0046ca08
jmp 0x479ac5
test edi, edi
jne 0x47888f
jmp 0x478e4a
xor eax, eax
xor edx, edx
test byte [esp + 0x98], 1
je 0x478b3f
mov eax, dword [esp + 0x6c]
sub eax, dword [edi + 0x10]
xor edx, edx
test byte [esp + 0x98], 2
je 0x478b51
test ecx, ecx
jne 0x478e4a
test byte [esp + 0x98], 4
je 0x478b63
test ecx, ecx
je 0x478e4a
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xa8]
cmp eax, ecx
mov ecx, edx
sbb ecx, dword [esp + 0xac]
mov ecx, dword [esp + 0x8c]
cmovb ebx, eax
mov eax, edx
cmovae eax, dword [esp + 0xac]
mov edx, dword [edi + 0xc]
mov dword [esp + 0x84], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x80], ebx
add eax, 0xffffffff
adc edx, 0xffffffff
add eax, dword [edi + 0x10]
adc edx, 0
cmp dword [esp + 0x88], eax
sbb ecx, edx
jb 0x478c08
cmp dword [esp + 0x4c], 0
jne 0x478c08
mov ebx, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
mov ecx, dword [esp + 0x88]
add ebx, eax
adc esi, edx
cmp ebx, ecx
mov ebx, esi
sbb ebx, dword [esp + 0x8c]
jb 0x478c08
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x8c]
sub ebx, eax
sbb esi, edx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], esi
cmp dword [esp + 0x84], 0
jne 0x478c20
cmp dword [esp + 0x80], 0
je 0x478e4a
mov ecx, dword [esp + 0x9c]
cmp dword [ecx + 0x64], 0
je 0x478cd3
add eax, dword [esp + 0x80]
adc edx, dword [esp + 0x84]
mov ebx, eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x10], edx
mov esi, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ebx
mov eax, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
call fcn.00474d2c
test eax, eax
jne 0x479ac5
cmp dword [esp + 0xb4], 0
jne 0x478c89
cmp dword [esp + 0xb0], 0
je 0x478cd3
mov eax, dword [esp + 0x9c]
mov ecx, dword [eax + 0x64]
mov eax, 0xffffffff
mov edx, eax
shl eax, cl
test cl, 0x20
je 0x478ca5
mov edx, eax
xor eax, eax
not ebx
not esi
or edx, esi
or eax, ebx
add dword [esp + 0x80], eax
adc dword [esp + 0x84], edx
cmp dword [esp + 0x84], 0
jne 0x478cd3
cmp dword [esp + 0x80], 0
je 0x478e4a
lea eax, [esp + 0xb8]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
add eax, dword [edi + 0x10]
mov dword [esp + 4], 3
mov dword [esp + 8], eax
mov eax, dword [esp + 0x9c]
adc edx, 0
mov dword [esp + 0xc], edx
mov dword [esp], eax
call fcn.0045cc34
test eax, eax
jne 0x478e4a
mov eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xbc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xb4]
mov dword [esp], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov edx, dword [ebp + 8]
call fcn.00478258
test eax, eax
jne 0x479ac5
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
test eax, eax
jne 0x479ac5
mov eax, dword [esp + 0xb8]
add dword [edi + 0x10], eax
mov dword [esp + 8], edi
mov edx, dword [esp + 0xbc]
mov ebx, eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov esi, edx
mov dword [esp], eax
call fcn.00462cbe
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
test byte [edi + 0x14], 2
jne 0x478def
test byte [esp + 0x98], 1
jne 0x478e07
add dword [esp + 0x78], ebx
adc dword [esp + 0x7c], esi
sub dword [esp + 0xa8], ebx
sbb dword [esp + 0xac], esi
jmp 0x478e4a
mov eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xb4]
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x10], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
je 0x478def
jmp 0x479ac5
cmp dword [ebp + 0x14], 0
je 0x4791bb
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 0x14]
and ecx, 2
je 0x478e65
mov eax, dword [esp + 0x70]
jmp 0x478e77
xor eax, eax
xor edx, edx
test byte [esp + 0x98], 1
je 0x478e7f
mov eax, dword [esp + 0x6c]
mov edi, dword [ebp + 0x14]
xor edx, edx
sub eax, dword [edi + 0x10]
test byte [esp + 0x98], 2
je 0x478e91
test ecx, ecx
jne 0x4791bb
test byte [esp + 0x98], 4
je 0x478ea3
test ecx, ecx
je 0x4791bb
mov edi, dword [esp + 0xa8]
cmp eax, edi
mov edi, edx
sbb edi, dword [esp + 0xac]
mov edi, dword [esp + 0xa8]
cmovb edi, eax
mov eax, edx
cmovae eax, dword [esp + 0xac]
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], eax
test eax, eax
jne 0x478ee3
test edi, edi
je 0x4791bb
mov eax, dword [esp + 0x9c]
cmp dword [eax + 0x64], 0
je 0x478fe6
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, dword [esp + 0x90]
sbb edx, dword [esp + 0x94]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.00474d2c
test eax, eax
jne 0x479ac5
cmp dword [esp + 0xb4], 0
jne 0x478f5c
cmp dword [esp + 0xb0], 0
je 0x478fe6
mov eax, dword [esp + 0x9c]
mov esi, 0xffffffff
mov edi, esi
mov ecx, dword [eax + 0x64]
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, dword [esp + 0x90]
sbb edx, dword [esp + 0x94]
shl esi, cl
xor ebx, ebx
test cl, 0x20
cmovne edi, esi
cmovne esi, ebx
mov ebx, dword [esp + 0x94]
not edi
not esi
and edx, edi
mov edi, ecx
and eax, esi
shr edi, 5
and edi, 1
mov esi, edi
shl edi, cl
xor esi, 1
shl esi, cl
mov ecx, dword [esp + 0x90]
sub ecx, esi
sbb ebx, edi
add eax, ecx
adc edx, ebx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], edx
cmp dword [esp + 0x94], 0
jne 0x478fe6
cmp dword [esp + 0x90], 0
je 0x4791bb
lea eax, [esp + 0xb8]
mov edx, dword [esp + 0x94]
xor edi, edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 4], 3
sub eax, dword [esp + 0x90]
sbb edx, dword [esp + 0x94]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc], edx
mov dword [esp], eax
call fcn.0045cc34
test eax, eax
jne 0x4791bb
mov eax, dword [esp + 0x9c]
xor ebx, ebx
mov ecx, dword [eax + 0x64]
mov eax, 0xffffffff
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
not edx
not eax
and edx, dword [esp + 0xb4]
and eax, dword [esp + 0xb0]
add eax, dword [esp + 0xb8]
adc edx, dword [esp + 0xbc]
xor esi, esi
mov dword [esp + 8], eax
mov eax, 0xffffffff
mov dword [esp + 0xc], edx
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
and edx, dword [esp + 0xb4]
and eax, dword [esp + 0xb0]
mov dword [esp], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov edx, dword [ebp + 8]
call fcn.00478258
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0x14]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0xbc]
sub dword [eax + 8], esi
sbb dword [eax + 0xc], edi
sub dword [eax], esi
sbb dword [eax + 4], edi
add dword [eax + 0x10], esi
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462cbe
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0x14]
test byte [eax + 0x14], 2
jne 0x479161
test byte [esp + 0x98], 1
jne 0x479171
sub dword [esp + 0xa8], esi
sbb dword [esp + 0xac], edi
jmp 0x4791bb
xor eax, eax
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
add eax, dword [esp + 0xb8]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
je 0x479161
jmp 0x479ac5
cmp dword [esp + 0xac], 0
jne 0x4791d3
cmp dword [esp + 0xa8], 0
je 0x47967f
mov eax, dword [esp + 0x9c]
xor ebx, ebx
mov ecx, dword [eax + 0x64]
mov eax, 0xffffffff
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
not edx
not eax
mov esi, eax
mov dword [esp + 0xa0], eax
mov edi, edx
and esi, dword [esp + 0x78]
mov dword [esp + 0xa4], edx
and edi, dword [esp + 0x7c]
jne 0x479219
test esi, esi
je 0x479469
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x88], ecx
mov dword [esp + 0xc8], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xcc], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.00474d2c
test eax, eax
jne 0x479ac5
mov ebx, dword [esp + 0xb4]
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x88]
test ebx, ebx
mov dword [esp + 0x90], eax
jne 0x47929f
test eax, eax
je 0x479469
xor eax, eax
xor edx, edx
test cl, 0x20
mov dword [esp + 0xc4], ebx
sete al
setne dl
shl eax, cl
shl edx, cl
sub eax, esi
sbb edx, edi
mov edi, dword [esp + 0xac]
and edx, dword [esp + 0xa4]
and eax, dword [esp + 0xa0]
cmp dword [esp + 0xa8], eax
sbb edi, edx
mov edi, dword [esp + 0xa8]
cmovae edi, eax
mov eax, edx
cmovb eax, dword [esp + 0xac]
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 8], edx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x60], edi
not eax
mov dword [esp + 0xd0], edi
and eax, 2
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
lea eax, [esp + 0xd8]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046264d
cmp eax, 0x7f2bb780
jne 0x479373
xor eax, eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
jmp 0x47937b
test eax, eax
jne 0x479ac5
lea eax, [esp + 0xc0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe0]
cmp dword [esp + 0xc8], eax
mov eax, dword [esp + 0xcc]
sbb eax, dword [esp + 0xe4]
setae al
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046370d
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
test byte [esp + 0xd4], 2
je 0x47940c
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
sub dword [esp + 0xa8], ebx
sbb dword [esp + 0xac], esi
cmp dword [esp + 0xac], 0
jne 0x479459
cmp dword [esp + 0xa8], 0
je 0x47967f
jmp 0x479459
test byte [esp + 0x98], 1
je 0x4793dc
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xc4]
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x10], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
je 0x4793dc
jmp 0x479ac5
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
add dword [esp + 0x78], ebx
adc dword [esp + 0x7c], esi
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0xa8]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x7c]
adc edx, dword [esp + 0xac]
xor esi, esi
mov ecx, dword [eax + 0x64]
mov eax, 0xffffffff
mov dword [esp + 0xa4], edx
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
not edx
not eax
and eax, dword [esp + 0xa0]
and edx, dword [esp + 0xa4]
mov esi, eax
mov edi, edx
je 0x479686
mov eax, 0xffffffff
xor ebx, ebx
mov edx, eax
shl eax, cl
test cl, 0x20
lea ecx, [esp + 0xb0]
cmovne edx, eax
cmovne eax, ebx
and edx, dword [esp + 0xa4]
mov dword [esp + 0x14], ecx
and eax, dword [esp + 0xa0]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0xcc], edx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.00474d2c
test eax, eax
jne 0x479ac5
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
test eax, eax
je 0x47968f
mov ebx, dword [esp + 0xac]
mov dword [esp + 0xc4], eax
cmp dword [esp + 0xa8], esi
mov eax, dword [esp + 0x98]
mov dword [esp + 0xc0], edx
sbb ebx, edi
mov ebx, dword [esp + 0xa8]
mov edx, dword [esp + 0xcc]
not eax
cmovb edi, dword [esp + 0xac]
cmovae ebx, esi
and eax, 2
mov dword [esp + 8], edx
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x50], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x54], edi
mov dword [esp], eax
mov dword [esp + 0xd0], ebx
call fcn.00462c97
lea eax, [esp + 0xd8]
xor edx, edx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046264d
cmp eax, 0x7f2bb780
jne 0x479699
xor eax, eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
lea eax, [esp + 0xc0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe0]
cmp dword [esp + 0xc8], eax
mov eax, dword [esp + 0xcc]
sbb eax, dword [esp + 0xe4]
setae al
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046370d
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
test byte [esp + 0xd4], 2
je 0x4796a6
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
sub dword [esp + 0xa8], ebx
sbb dword [esp + 0xac], esi
cmp dword [esp + 0xac], 0
jne 0x4796f7
cmp dword [esp + 0xa8], 0
jne 0x4796f7
xor eax, eax
jmp 0x479ac5
test eax, eax
je 0x4796f7
jmp 0x4794c7
test edx, edx
jne 0x479546
jmp 0x4796f7
test eax, eax
je 0x4795f0
jmp 0x479ac5
test byte [esp + 0x98], 1
je 0x479651
xor eax, eax
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
je 0x479651
jmp 0x479ac5
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0xcc], edx
mov edx, dword [esp + 0x34]
and eax, 2
cmove edi, dword [esp + 0x70]
cmp eax, 1
mov dword [esp + 0xb4], edx
mov edx, dword [esp + 0xac]
sbb eax, eax
mov dword [esp + 0x70], edi
and eax, 2
mov dword [esp + 0x84], edx
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x90], edi
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
xor eax, eax
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x9c]
xor ebx, ebx
mov ecx, dword [eax + 0x64]
mov eax, 0xffffffff
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
not eax
and eax, dword [esp + 0xc8]
not edx
and edx, dword [esp + 0xcc]
mov esi, eax
lea eax, [esp + 0xb8]
mov edi, edx
mov edx, dword [esp + 0x84]
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x80]
add eax, esi
adc edx, edi
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xa4], edx
cmp dword [esp + 0x90], eax
mov eax, dword [esp + 0x94]
sbb eax, dword [esp + 0xa4]
mov eax, dword [esp + 0x90]
cmovae eax, dword [esp + 0xa0]
mov edx, dword [esp + 0xa4]
cmovb edx, dword [esp + 0x94]
xor ebx, ebx
mov dword [esp + 0x10], eax
mov eax, 0xffffffff
mov dword [esp + 0x14], edx
mov edx, eax
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
and eax, dword [esp + 0xb0]
and edx, dword [esp + 0xb4]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc], edx
mov dword [esp], eax
call fcn.0045cc34
test eax, eax
jne 0x479ac5
mov eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xbc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xb4]
mov dword [esp], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov edx, dword [ebp + 8]
call fcn.00478258
test eax, eax
jne 0x479ac5
mov eax, esi
add eax, dword [esp + 0xb0]
mov edx, edi
adc edx, dword [esp + 0xb4]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xc4], edx
mov edx, dword [esp + 0xcc]
sub eax, esi
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462c97
lea eax, [esp + 0xd8]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046264d
cmp eax, 0x7f2bb780
jne 0x479946
xor eax, eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
jmp 0x47994e
test eax, eax
jne 0x479ac5
lea eax, [esp + 0xc0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe0]
cmp dword [esp + 0xc8], eax
mov eax, dword [esp + 0xcc]
sbb eax, dword [esp + 0xe4]
setae al
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.0046370d
test eax, eax
jne 0x479ac5
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00462fc5
test eax, eax
jne 0x479ac5
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
test byte [esp + 0xd4], 2
je 0x479a61
mov ecx, dword [esp + 0xb8]
mov ebx, dword [esp + 0xbc]
mov eax, ecx
mov edx, ebx
sub eax, esi
sbb edx, edi
add dword [esp + 0x88], eax
adc dword [esp + 0x8c], edx
sub esi, ecx
sbb edi, ebx
add dword [esp + 0x80], esi
adc dword [esp + 0x84], edi
add dword [esp + 0xc8], eax
adc dword [esp + 0xcc], edx
add dword [esp + 0xb0], eax
mov eax, dword [esp + 0x9c]
adc dword [esp + 0xb4], edx
mov eax, dword [eax + 0x10]
mov dword [esp], eax
call fcn.0045ea6e
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0xb4]
cmp dword [esp + 0xb0], ecx
sbb edx, eax
jb 0x479a9e
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov dword [esp + 0xb0], eax
xor eax, eax
mov dword [esp + 0xb4], eax
jmp 0x479a9e
test byte [esp + 0x98], 1
je 0x4799c8
mov dword [esp + 4], eax
mov eax, dword [esp + 0x9c]
xor ebx, ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.0046ca08
test eax, eax
je 0x4799c8
jmp 0x479ac5
mov eax, dword [esp + 0xa8]
cmp dword [esp + 0x88], eax
mov eax, dword [esp + 0x8c]
sbb eax, dword [esp + 0xac]
jb 0x479785
jmp 0x47967f
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret