Function at 0x10046f90
Capabilities:
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x580
cmp dword [edx + 8], 0
call 0x10046fa8
pop eax
mov dword [esp + 0x3c], ecx
mov ecx, 0
mov dword [esp + 8], 0
mov dword [esp + 0x18], eax
mov eax, 6
jne 0x10046fd2
lea eax, [edx + 8]
lea ecx, [edx + 0xc]
mov dword [edx + 8], 0xffffffff
mov dword [esp + 0x90], ecx
mov dword [esp + 0x48], edx
lea ebx, [0x647ac4e]
lea edx, [0x647ac4f]
mov ecx, 0xfffffff9
xor esi, esi
mov dword [esp + 0x44], eax
nop word cs:[eax + eax]
nop
movzx eax, byte [ebx]
mov ebx, edx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x10047023
or al, 0x20
mov edx, eax
add dl, 0x9f
cmp dl, 6
jae 0x1004824b
add al, 0xa9
mov edx, eax
mov eax, esi
movzx edi, dl
lea edx, [ebx + 1]
shl eax, 4
or edi, eax
test ecx, ecx
cmove edx, ebx
je 0x10047044
shld dword [esp + 8], esi, 4
inc ecx
test ebx, ebx
mov esi, edi
jne 0x10047000
mov ebx, dword [esp + 0x90]
test ebx, ebx
je 0x10047094
mov eax, dword [ebx + 4]
mov ecx, dword [eax]
lea esi, [eax + 0x68]
push esi
push 2
push 0
push 0
push dword [ebx]
push dword [eax + 8]
call dword [ecx + 0x2cc]
add esp, 0x18
add eax, 4
cmp eax, 4
ja 0x10047145
mov ecx, dword [esp + 0x18]
add ecx, dword [eax*4 + 0x6447ef0]
jmp ecx
movzx eax, byte [esp + 0x44]
mov edx, 7
xor edi, 0x20
shl eax, 2
mov ecx, dword [eax + 0x6476258]
mov ebx, dword [eax + 0x6476288]
mov dword [esp + 8], ecx
mov ecx, 0x64761f0
call fcn.1000bf90
mov edx, dword [esp + 8]
mov ecx, ebx
mov esi, eax
call fcn.1000bf90
mov edx, dword [esp + 0x3c]
test eax, eax
mov ecx, 1
cmove eax, ecx
test esi, esi
cmove esi, ecx
mov dword [edx], esi
mov dword [edx + 4], eax
mov dword [edx + 8], edi
mov dword [edx + 0xc], 0
mov dword [edx + 0x144], 2
mov esi, dword [esp + 0x48]
mov edx, dword [ebp + 8]
cmp dword [edx], 0
jne 0x10047f41
jmp 0x10047f23
mov al, 4
mov dword [esp + 0xc], 0
mov byte [ebx + 8], al
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
xor esi, esi
lea edx, [0x647ac4e]
lea eax, [0x647ac4f]
mov edi, 0xfffffff9
mov dword [esp + 8], 0
nop dword [eax]
movzx ebx, byte [edx]
mov edx, eax
mov eax, ebx
add al, 0xd0
cmp al, 0xa
jb 0x100471a1
or bl, 0x20
mov eax, ebx
add al, 0x9f
cmp al, 6
jae 0x1004824b
add bl, 0xa9
mov eax, ebx
mov ecx, esi
movzx ebx, al
lea eax, [edx + 1]
shl ecx, 4
or ebx, ecx
test edi, edi
cmove eax, edx
je 0x100471c2
shld dword [esp + 8], esi, 4
inc edi
test edx, edx
mov esi, ebx
jne 0x10047180
cmp byte [esp + 0x18], 0
je 0x10047345
neg dword [esp + 0x1c]
mov eax, 0
lea ecx, [esp + 0xe0]
mov edx, 0x200
mov dword [esp + 0xe0], 1
mov dword [esp + 0xe8], 0
mov dword [esp + 0x574], 0
mov dword [esp + 0xec], 0
sbb eax, eax
mov dword [esp + 0xc], eax
lea eax, [esp + 0x374]
mov dword [esp + 0xe4], eax
call fcn.1002eaa0
mov edi, dword [esp + 0xe0]
mov ebx, dword [esp + 0xe4]
cmp al, 8
jne 0x10047394
movq xmm0, qword [esp + 0xe8]
mov eax, dword [esp + 0x38]
mov ecx, ebx
test edi, edi
je 0x1004749c
or dword [esp + 0xc], eax
movzx eax, cl
and ebx, 0xffffff00
lea edx, [0x647ac4e]
lea esi, [0x647ac4f]
mov ecx, 0xfffffff9
or eax, ebx
nop word cs:[eax + eax]
nop
movzx ebx, byte [edx]
mov edx, esi
mov bh, bl
add bh, 0xd0
cmp bh, 0xa
jb 0x1004729e
or bl, 0x20
add bl, 0x9f
cmp bl, 6
jae 0x1004824b
lea esi, [edx + 1]
test ecx, ecx
cmove esi, edx
je 0x100472ad
inc ecx
test edx, edx
jne 0x10047280
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x108], edi
mov dword [esp + 0x10c], eax
movq qword [esp + 0x110], xmm0
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], 0
mov dword [esp + 0x124], 0
lea esi, [esp + 0x4c]
mov word [esp + 0x4c], 0
mov dword [esp + 0x120], edx
mov dword [esp + 0x128], ecx
lea ecx, [esp + 0x160]
lea edx, [esp + 0x108]
push 2
push esi
push 0
call fcn.10049320
add esp, 0xc
mov ecx, dword [esp + 0x160]
test ecx, ecx
je 0x10047425
mov eax, dword [esp + 0x164]
jne 0x10047433
jmp 0x1004775d
mov eax, dword [esp + 0xc]
mov edx, 7
xor ebx, 0x23
mov ecx, dword [eax*4 + 0x6476258]
mov edi, dword [eax*4 + 0x6476288]
mov dword [esp + 8], ecx
mov ecx, 0x64761f0
call fcn.1000bf90
mov edx, dword [esp + 8]
mov ecx, edi
mov esi, eax
call fcn.1000bf90
test esi, esi
mov ecx, 1
cmove esi, ecx
test eax, eax
cmove eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [ecx], esi
jmp 0x10047554
mov edx, 1
mov byte [esp + 8], al
mov ecx, 1
push dword [esp + 0xec]
call fcn.1000a460
add esp, 4
test eax, eax
je 0x10047489
mov esi, dword [ebx + 0x200]
mov ecx, dword [ebx + 0x204]
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], edx
test esi, esi
mov dword [esp + 0x108], esi
mov dword [esp + 0x10c], ecx
je 0x10048970
cmp esi, eax
jne 0x10048970
cmp ecx, edx
jne 0x10048970
mov eax, dword [esp + 0x38]
cmp ebx, edi
mov dword [esp + 0x74], edi
mov dword [esp + 0x108], ebx
jne 0x10048a28
mov dword [edi + 0x200], 0
xor edi, edi
movzx ecx, byte [esp + 8]
test edi, edi
jne 0x10047254
jmp 0x1004749c
movzx eax, byte [esp + 0x164]
je 0x1004775d
cmp eax, 2
jne 0x10047480
movzx eax, word [ecx]
cmp eax, 0x5a4d
jne 0x10047480
lea ecx, [esp + 0x160]
mov dword [esp + 0x4c], 0
lea edx, [esp + 0x108]
push 4
push esi
push 0x3c
call fcn.10049320
add esp, 0xc
mov ecx, dword [esp + 0x160]
test ecx, ecx
je 0x10047570
mov eax, dword [esp + 0x164]
jmp 0x10047578
xor ecx, ecx
xor eax, eax
jmp 0x1004775f
mov eax, dword [esp + 0x38]
xor edi, edi
movzx ecx, byte [esp + 8]
test edi, edi
jne 0x10047254
mov byte [esp + 8], cl
xor ecx, ecx
lea edx, [0x647ac4e]
lea edi, [0x647ac4f]
mov eax, 0xfffffff9
xor esi, esi
nop word cs:[eax + eax]
nop
movzx ebx, byte [edx]
mov edx, edi
mov bh, bl
add bh, 0xd0
cmp bh, 0xa
jb 0x100474e5
or bl, 0x20
mov bh, bl
add bh, 0x9f
cmp bh, 6
jae 0x1004824b
add bl, 0xa9
mov bh, bl
mov edi, ecx
movzx ebx, bh
shl edi, 4
or ebx, edi
lea edi, [edx + 1]
test eax, eax
cmove edi, edx
je 0x10047504
shld esi, ecx, 4
inc eax
test edx, edx
mov ecx, ebx
jne 0x100474c0
movzx eax, byte [esp + 8]
mov edx, 0xd
xor ebx, 0x27
mov ecx, dword [eax*4 + 0x6475fe4]
mov esi, dword [eax*4 + 0x6476004]
mov dword [esp + 8], ecx
mov ecx, 0x6475e7f
call fcn.1000bf90
mov edx, dword [esp + 8]
mov ecx, esi
mov edi, eax
test eax, eax
mov eax, 1
cmove edi, eax
call fcn.1000bf90
test eax, eax
mov ecx, 1
cmove eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov dword [ecx + 8], ebx
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x144], 2
jmp 0x10047f11
movzx eax, byte [esp + 0x164]
je 0x1004775d
cmp eax, 4
jne 0x1004759d
mov ebx, dword [ecx]
lea eax, [ebx - 4]
cmp eax, 0x7ffffff9
jae 0x100475a6
test bl, 3
je 0x100475af
mov al, 3
xor ecx, ecx
jmp 0x1004775f
mov al, 1
xor ecx, ecx
jmp 0x1004775f
mov al, 4
xor ecx, ecx
jmp 0x1004775f
lea edi, [esp + 0x160]
mov dword [esp + 0x4c], 0
lea edx, [esp + 0x108]
mov ecx, edi
push 4
push esi
push ebx
call fcn.10049320
add esp, 0xc
mov eax, dword [esp + 0x160]
test eax, eax
je 0x10047755
cmp dword [esp + 0x164], 4
jne 0x1004774f
cmp dword [eax], 0x4550
jne 0x1004774f
lea eax, [ebx + 4]
pxor xmm0, xmm0
mov dword [esp + 0x170], 0
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x108]
movdqa xmmword [esp + 0x160], xmm0
push 0x14
push edi
push eax
call fcn.10049320
add esp, 0xc
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x10048231
cmp dword [esp + 0x50], 0x14
jne 0x1004823a
movss xmm1, dword [eax + 0x10]
movd xmm0, dword [eax]
movq xmm2, qword [eax + 4]
mov ecx, dword [eax + 0xc]
lea eax, [ebx + 0x18]
mov dword [esp + 0x13c], ebx
lea edx, [esp + 0x108]
movaps xmmword [esp + 0x340], xmm1
xorps xmm1, xmm1
mov dword [esp + 0x138], ecx
movdqa xmmword [esp + 0x330], xmm0
movdqa xmmword [esp + 0x350], xmm2
lea ecx, [esp + 0x4c]
movaps xmmword [esp + 0x240], xmm1
movaps xmmword [esp + 0x230], xmm1
movaps xmmword [esp + 0x220], xmm1
movaps xmmword [esp + 0x210], xmm1
movaps xmmword [esp + 0x200], xmm1
movaps xmmword [esp + 0x1f0], xmm1
movaps xmmword [esp + 0x1e0], xmm1
movaps xmmword [esp + 0x1d0], xmm1
movaps xmmword [esp + 0x1c0], xmm1
movaps xmmword [esp + 0x1b0], xmm1
movaps xmmword [esp + 0x1a0], xmm1
movaps xmmword [esp + 0x190], xmm1
movaps xmmword [esp + 0x180], xmm1
movaps xmmword [esp + 0x170], xmm1
movaps xmmword [esp + 0x160], xmm1
push 0xf0
push edi
mov dword [esp + 0x10], eax
push eax
call fcn.10049320
add esp, 0xc
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x1004836a
cmp dword [esp + 0x50], 0xf0
jne 0x10048264
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 3]
movups xmm0, xmmword [eax + 4]
mov edi, eax
mov byte [esp + 0x12], cl
mov byte [esp + 0x13], dl
jmp 0x100482ac
mov al, 2
xor ecx, ecx
jmp 0x1004775f
movzx eax, byte [esp + 0x164]
mov cl, 2
mov byte [esp + 0x20], cl
mov byte [esp + 0x21], al
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], 0
xor esi, esi
lea edx, [0x647ac4e]
lea ebx, [0x647ac4f]
mov eax, 0xfffffff9
mov dword [esp + 8], 0
nop
movzx ecx, byte [edx]
mov edx, ebx
mov ch, cl
add ch, 0xd0
cmp ch, 0xa
jb 0x100477b5
or cl, 0x20
mov ch, cl
add ch, 0x9f
cmp ch, 6
jae 0x1004824b
add cl, 0xa9
mov ch, cl
mov ebx, esi
movzx edi, ch
shl ebx, 4
or edi, ebx
lea ebx, [edx + 1]
test eax, eax
cmove ebx, edx
je 0x100477d6
shld dword [esp + 8], esi, 4
inc eax
test edx, edx
mov esi, edi
jne 0x10047790
cmp dword [esp + 0x14], 0
je 0x10047878
movzx eax, byte [esp + 0x86]
mov edx, dword [esp + 0x40]
mov edi, dword [ebp + 0x10]
xor ebx, ebx
mov byte [esp + 0x82], al
movzx eax, word [esp + 0x84]
mov ecx, edx
shr ecx, 1
and ecx, 0x55555555
mov word [esp + 0x80], ax
mov eax, edx
sub eax, ecx
mov ecx, eax
shr eax, 2
and ecx, 0x33333333
and eax, 0x33333333
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul eax, ecx, 0x1010101
shr eax, 0x18
cmp eax, 1
setne al
je 0x1004784a
mov edx, dword [edi + 4]
mov ecx, dword [edi + 0xc]
mov esi, dword [esp + 0xc]
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0xa4]
mov bl, al
add ebx, ebx
test ecx, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0xc], esi
je 0x100478e4
mov dword [esp + 8], ebx
jmp 0x1004790d
movzx eax, byte [esp + 0x20]
mov ecx, 0x647ac75
mov edx, 0xa
xor edi, 0x2b
mov ebx, dword [eax*4 + 0x647ac80]
mov eax, dword [eax*4 + 0x647ac8c]
mov dword [esp + 8], eax
call fcn.1000bf90
mov edx, dword [esp + 8]
mov ecx, ebx
mov esi, eax
test eax, eax
mov eax, 1
cmove esi, eax
call fcn.1000bf90
mov edx, dword [esp + 0x3c]
test eax, eax
mov ecx, 1
cmove eax, ecx
mov dword [edx], esi
mov dword [edx + 4], eax
mov dword [edx + 8], edi
mov dword [edx + 0xc], 0
mov dword [edx + 0x144], 2
jmp 0x10047f05
lea eax, [edx - 1]
test edx, eax
sete al
test edx, edx
setne cl
test cl, al
je 0x100478ff
mov dword [esp + 8], ebx
mov dword [esp + 0x30], edx
jmp 0x1004790d
mov eax, dword [edi + 8]
or ebx, 4
mov dword [esp + 8], ebx
mov dword [esp + 0x30], eax
pshufd xmm0, xmmword [esp + 0x250], 0x55
mov ebx, dword [esp + 0xa8]
mov edi, 0x80000000
movd edx, xmm0
mov esi, ebx
lea ecx, [ebx - 1]
cmp edx, 0x80000000
cmovb edi, edx
neg esi
mov eax, edi
and eax, esi
and edi, ecx
cmovne edi, ebx
add edi, eax
jb 0x100489dd
xor eax, eax
cmp edi, edx
mov edx, edi
mov dword [esp + 0xdc], esi
mov dword [esp + 0x144], ecx
setb byte [esp + 0x90]
and edx, esi
and edi, ecx
cmovne edi, ebx
add edi, edx
jb 0x100489f6
mov ecx, dword [ebp + 0x10]
mov edx, edi
mov esi, dword [ecx]
mov ecx, esi
lea ebx, [esi - 1]
neg ecx
mov dword [esp + 0x148], ebx
and edx, ecx
and edi, ebx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x14c], ecx
cmovne edi, esi
add edi, edx
jb 0x10048a0f
movzx ecx, byte [esp + 0x90]
movq xmm0, qword [esp + 0x20]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x4c], 4
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0xd4], edi
mov al, cl
lea ecx, [esp + 0x4c]
movdqa xmmword [esp + 0x360], xmm0
or dword [esp + 8], eax
cmp dword [esp + 0x40], esi
mov esi, dword [esp + 0xd0]
jb 0x10047cc6
mov edx, esi
call fcn.1002db10
cmp al, 8
jne 0x10047db0
test esi, esi
je 0x10047d62
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], 0
mov dword [esp + 0x1c], 0
mov ecx, eax
dec eax
mov dword [esp + 0x140], eax
mov eax, dword [esp + 0x14]
neg ecx
mov dword [esp + 0xd8], ecx
lea ecx, [eax + 8]
lea eax, [esi*8]
mov esi, dword [esp + 8]
lea eax, [eax + eax*4]
mov edi, esi
nop
mov ebx, dword [ecx + 4]
mov edx, dword [esp + 0xd4]
or edi, 0x40
mov dword [esp + 0x15c], eax
and ebx, dword [esp + 0xdc]
cmp ebx, edx
mov dword [esp + 0x18], ebx
cmovbe edi, esi
xor eax, eax
cmp ebx, dword [esp + 0x34]
mov esi, 0xff
setne al
cmovb eax, esi
test al, al
je 0x10047a98
movzx eax, al
cmp eax, 1
jne 0x10047cb0
or edi, 8
mov dword [esp + 8], ecx
mov ecx, dword [ecx]
test ecx, ecx
jne 0x10047aa9
mov eax, dword [esp + 8]
mov ecx, dword [eax + 8]
mov eax, edx
mov edx, 0
sub eax, dword [esp + 0x18]
cmovb eax, edx
cmp ecx, eax
jbe 0x10047ad0
or edi, 0x40
xor edx, edx
xor ecx, ecx
jmp 0x10047b12
mov edx, dword [esp + 0x148]
mov eax, ecx
and eax, dword [esp + 0x14c]
and edx, ecx
cmovne edx, dword [esp + 0x8c]
add edx, eax
jb 0x1004893e
mov eax, ecx
and eax, dword [esp + 0xdc]
and ecx, dword [esp + 0x144]
cmovne ecx, dword [esp + 0xa8]
add ecx, eax
jb 0x10048957
mov eax, dword [esp + 8]
mov ebx, dword [eax + 0xc]
test ebx, ebx
jne 0x10047b26
xor eax, eax
cmp dword [esp + 0x1c], 0
jne 0x10047b2d
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov esi, dword [esp + 0x38]
add eax, ebx
cmovae esi, eax
mov dword [esp + 0x38], esi
jb 0x10047b69
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x140]
mov eax, ebx
and eax, dword [esp + 0xd8]
and esi, ebx
mov ebx, dword [esp + 0x90]
cmovne esi, dword [esp + 0x30]
add esi, eax
jae 0x10047b71
or edi, 0x100
xor esi, esi
and ebx, dword [esp + 0xd8]
mov dword [esp + 0x158], edx
mov eax, dword [esp + 0x1c]
sub esi, ebx
mov dword [esp + 0x90], ebx
cmp esi, edx
cmovae esi, edx
mov edx, dword [esp + 0xc]
cmp ebx, edx
jae 0x10047bb0
sub edx, dword [esp + 0x90]
cmp edx, esi
cmovae edx, esi
jmp 0x10047bb8
or edi, 0x100
xor edx, edx
cmp eax, 0x10000
mov dword [esp + 0x154], ecx
mov dword [esp + 0x34], edi
je 0x10048918
mov edi, esi
mov ebx, eax
xor eax, eax
mov ecx, dword [esp + 0x34]
sub edi, edx
cmp edi, dword [esp + 0x30]
mov edi, 0
setae al
shl eax, 7
sub eax, 0xffffff80
cmp esi, edx
cmove eax, edi
mov edi, dword [esp + 0x158]
or ecx, eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x150], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], edi
mov edi, ecx
mov ecx, dword [esp + 0x154]
add eax, ecx
mov dword [esp + 0x168], ecx
mov ecx, dword [esp + 0x150]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x16c], eax
mov dword [esp + 0x170], esi
mov dword [esp + 0x174], edx
mov dword [esp + 0x178], ecx
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x160]
mov word [esp + 0x17c], bx
mov word [esp + 0x17e], bx
call fcn.1002ec80
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x15c]
mov edx, dword [esp + 0x8c]
inc ebx
mov esi, edi
mov dword [esp + 0x1c], ebx
add ecx, 0x28
add eax, 0xffffffd8
jne 0x10047a50
jmp 0x10047d6d
or edi, 0x10
mov dword [esp + 8], ecx
mov ecx, dword [ecx]
test ecx, ecx
jne 0x10047aa9
jmp 0x10047aa2
mov edx, 1
call fcn.1002db10
cmp al, 8
jne 0x10047db0
lea eax, [esi - 1]
mov ecx, eax
shl ecx, 0x10
or ecx, 0x100
cmp eax, 0x10000
mov eax, 0x101
cmovb eax, ecx
test al, al
jne 0x10048a95
cmp edi, ebx
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x160]
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], edi
mov dword [esp + 0x168], edi
mov dword [esp + 0x16c], 0
mov dword [esp + 0x170], edi
cmovb ebx, edi
shr eax, 0x10
mov dword [esp + 0x174], ebx
mov dword [esp + 0x178], 0xe0000000
mov word [esp + 0x17c], 0
mov word [esp + 0x17e], ax
call fcn.1002ec80
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x8c]
cmp dword [esp + 0x40], edx
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x34], edi
mov dword [esp + 0xe0], edx
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x54]
setae byte [esp + 0x90]
mov dword [esp + 0x18], eax
mov dword [esp + 0xe4], edx
mov dword [esp + 0xc], ecx
jmp 0x10047df0
mov edx, 4
mov byte [esp + 0xe0], al
mov ecx, 0x20
push dword [esp + 0x54]
call fcn.1000a460
add esp, 4
test eax, eax
je 0x10047de8
mov ecx, dword [0x647e000]
push edx
push eax
push dword [esp + 0x54]
push 0x647da08
call dword [ecx + 0x10]
add esp, 0x10
mov byte [esp + 0x90], 2
xor eax, eax
lea ecx, [0x647ac4e]
lea ebx, [0x647ac4f]
mov edi, 0xfffffff9
mov dword [esp + 8], 0
nop dword [eax + eax]
movzx edx, byte [ecx]
mov ecx, ebx
mov dh, dl
add dh, 0xd0
cmp dh, 0xa
jb 0x10047e35
or dl, 0x20
mov dh, dl
add dh, 0x9f
cmp dh, 6
jae 0x1004824b
add dl, 0xa9
mov dh, dl
mov ebx, eax
movzx esi, dh
shl ebx, 4
or esi, ebx
lea ebx, [ecx + 1]
test edi, edi
cmove ebx, ecx
je 0x10047e56
shld dword [esp + 8], eax, 4
inc edi
test ecx, ecx
mov eax, esi
jne 0x10047e10
movzx edx, byte [esp + 0x90]
cmp dl, 2
jne 0x10047f9f
movzx eax, byte [esp + 0xe0]
mov edx, 0xd
xor esi, 0x2d
mov ecx, dword [eax*4 + 0x6475fe4]
mov edi, dword [eax*4 + 0x6476004]
mov dword [esp + 8], ecx
mov ecx, 0x6475e7f
call fcn.1000bf90
mov edx, dword [esp + 8]
mov ecx, edi
mov ebx, eax
test eax, eax
mov eax, 1
cmove ebx, eax
call fcn.1000bf90
test eax, eax
mov ecx, 1
mov edx, 4
cmove eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [ecx], ebx
mov dword [ecx + 4], eax
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x144], 2
mov ecx, 0x28
push dword [esp + 0xcc]
call fcn.1000a460
add esp, 4
test eax, eax
je 0x10047f05
mov ecx, dword [0x647e000]
push edx
push eax
push dword [esp + 0x1c]
push 0x647da08
call dword [ecx + 0x10]
add esp, 0x10
lea ecx, [esp + 0x108]
call fcn.1002eed0
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov edx, dword [ebp + 8]
inc dword [eax]
cmp dword [edx], 0
jne 0x10047f41
mov eax, dword [edx + 8]
test eax, eax
je 0x10047f41
mov ecx, dword [0x647e000]
push 1
push eax
push dword [edx + 4]
push 0x647da08
call dword [ecx + 0x10]
add esp, 0x10
dec dword [esi]
je 0x10047f4d
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esi + 4]
lea ecx, [eax + 1]
mov dword [esi + 4], ecx
cmp byte [esi + 0x15], 0
je 0x10047f7f
mov eax, dword [esi + 0x10]
mov ecx, dword [eax]
push dword [esi + 0xc]
push dword [eax + 8]
call dword [ecx + 0x2d8]
add esp, 8
mov eax, dword [esi + 4]
mov ecx, dword [esi]
dec eax
or ecx, eax
mov dword [esi + 4], eax
jne 0x10047f45
jmp 0x10047f88
xor ecx, ecx
or ecx, eax
mov dword [esi + 4], eax
jne 0x10047f45
mov eax, dword [0x647e000]
push 4
push 0x18
push esi
push 0x647da08
call dword [eax + 0x10]
add esp, 0x10
jmp 0x10047f45
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
movq xmm0, qword [esp + 0xe0]
mov esi, dword [esp + 0x13c]
mov edi, dword [esp + 0x138]
mov dword [ecx + 0x130], eax
mov eax, dword [esp + 0xd4]
mov dword [ecx + 0x134], eax
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x138], eax
mov eax, dword [esp + 0x44]
inc dword [eax]
mov eax, dword [ebp + 8]
movzx ebx, byte [esp + 0x82]
movsd xmm1, qword [eax]
mov eax, dword [eax + 8]
movsd qword [ecx + 0x144], xmm1
mov dword [ecx + 0x14c], eax
movaps xmm1, xmmword [esp + 0x360]
mov eax, dword [esp + 0xac]
movlps qword [ecx], xmm1
mov dword [ecx + 8], eax
mov eax, dword [esp + 0xb0]
movaps xmm1, xmmword [esp + 0x2e0]
mov dword [ecx + 0xc], eax
movups xmmword [ecx + 0x10], xmm1
movaps xmm1, xmmword [esp + 0x2d0]
mov eax, dword [esp + 0xb4]
movups xmmword [ecx + 0x20], xmm1
movaps xmm1, xmmword [esp + 0x2c0]
movups xmmword [ecx + 0x30], xmm1
movaps xmm1, xmmword [esp + 0x2b0]
movups xmmword [ecx + 0x40], xmm1
movaps xmm1, xmmword [esp + 0x2a0]
movups xmmword [ecx + 0x50], xmm1
movaps xmm1, xmmword [esp + 0x290]
movups xmmword [ecx + 0x60], xmm1
mov dword [ecx + 0x70], eax
movaps xmm1, xmmword [esp + 0x280]
mov eax, dword [esp + 0xb8]
movlps qword [ecx + 0x74], xmm1
mov dword [ecx + 0x7c], eax
mov eax, dword [esp + 0xc4]
movaps xmm1, xmmword [esp + 0x270]
mov dword [ecx + 0x84], eax
mov eax, dword [esp + 0xc8]
mov dword [ecx + 0x80], eax
movups xmmword [ecx + 0x88], xmm1
movaps xmm1, xmmword [esp + 0x260]
mov eax, dword [esp + 0x134]
movups xmmword [ecx + 0x98], xmm1
movaps xmm1, xmmword [esp + 0x2f0]
movups xmmword [ecx + 0xa8], xmm1
mov dword [ecx + 0xb8], eax
mov eax, dword [esp + 0xa0]
movaps xmm1, xmmword [esp + 0x250]
mov dword [ecx + 0xbc], eax
mov eax, dword [esp + 0x40]
mov dword [ecx + 0xc0], eax
mov eax, dword [esp + 0xa4]
mov dword [ecx + 0xc4], eax
mov eax, dword [esp + 0xc0]
movups xmmword [ecx + 0xc8], xmm1
movaps xmm1, xmmword [esp + 0x320]
mov dword [ecx + 0xd8], eax
mov eax, dword [esp + 0xbc]
mov dword [ecx + 0xdc], eax
mov eax, dword [esp + 0x2c]
mov word [ecx + 0xe0], ax
movlps qword [ecx + 0xe2], xmm1
movaps xmm1, xmmword [esp + 0x310]
movzx eax, byte [esp + 0x12]
movss dword [ecx + 0xea], xmm1
movaps xmm1, xmmword [esp + 0x300]
movss dword [ecx + 0xee], xmm1
mov byte [ecx + 0xf2], al
movzx eax, byte [esp + 0x13]
movaps xmm1, xmmword [esp + 0x350]
mov byte [ecx + 0xf3], al
movzx eax, word [esp + 0x80]
mov byte [ecx + 0xf4], 0
mov byte [ecx + 0xf7], bl
mov word [ecx + 0xf5], ax
mov dword [ecx + 0xf8], esi
movlps qword [ecx + 0xfc], xmm1
movaps xmm1, xmmword [esp + 0x330]
mov dword [ecx + 0x104], edi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0xd0]
movss dword [ecx + 0x108], xmm1
movaps xmm1, xmmword [esp + 0x340]
movss dword [ecx + 0x10c], xmm1
mov dword [ecx + 0x110], esi
mov esi, dword [esp + 0xcc]
mov dword [ecx + 0x114], edi
mov edi, dword [esp + 0x18]
mov dword [ecx + 0x118], esi
mov esi, dword [esp + 0x1c]
movq qword [ecx + 0x120], xmm0
mov dword [ecx + 0x128], edi
mov dword [ecx + 0x12c], esi
mov byte [ecx + 0x13c], dl
mov edx, dword [esp + 0x48]
mov dword [ecx + 0x140], edx
lea ecx, [esp + 0x108]
call fcn.1002eed0
jmp 0x10047f45
movzx eax, byte [esp + 0x50]
mov cl, 2
jmp 0x1004823e
mov al, 5
xor ecx, ecx
mov byte [esp + 0x20], cl
mov byte [esp + 0x21], al
jmp 0x10047767
mov ecx, 0x647d85c
mov edx, 0xe
push 0x6475de0
call fcn.10007ff0
add esp, 4
ud2
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x108]
push 0xf0
push edi
push dword [esp + 0x10]
call fcn.100493f0
add esp, 0xc
cmp dword [esp + 0x4c], 0
je 0x1004836a
movzx eax, byte [esp + 0x162]
movzx ecx, byte [esp + 0x163]
movups xmm0, xmmword [esp + 0x164]
mov byte [esp + 0x12], al
mov byte [esp + 0x13], cl
movaps xmmword [esp + 0x2f0], xmm0
movzx eax, word [edi]
mov ecx, edi
mov ecx, dword [edi + 0x14]
cmp eax, 0x10b
mov dword [esp + 0x134], ecx
mov dword [esp + 0x2c], eax
mov ecx, edi
jne 0x1004837d
mov eax, dword [edi + 0x18]
movss xmm2, dword [edi + 0x30]
movups xmm1, xmmword [edi + 0x34]
movd xmm3, dword [edi + 0x44]
movsd xmm0, qword [edi + 0x28]
mov dword [esp + 0xc4], 0
mov esi, 0x58
mov dword [esp + 0xa0], eax
mov eax, dword [edi + 0x1c]
movaps xmmword [esp + 0x310], xmm2
movaps xmmword [esp + 0x250], xmm1
movq xmm1, qword [edi + 0x48]
movq xmm2, qword [edi + 0x50]
movdqa xmmword [esp + 0x300], xmm3
pxor xmm3, xmm3
movaps xmmword [esp + 0x320], xmm0
mov dword [esp + 0xc8], eax
mov eax, dword [edi + 0x20]
punpckldq xmm1, xmm3
punpckldq xmm2, xmm3
movdqa xmmword [esp + 0x270], xmm1
movdqa xmmword [esp + 0x260], xmm2
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x24]
mov dword [esp + 0xa4], eax
jmp 0x10048412
movzx eax, byte [esp + 0x50]
mov byte [esp + 0x20], 2
mov byte [esp + 0x21], al
jmp 0x10047767
movsd xmm0, qword [edi + 0x28]
mov edx, dword [edi + 0x1c]
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x18]
movaps xmmword [esp + 0x320], xmm0
movss xmm0, dword [edi + 0x30]
mov dword [esp + 0xc4], edx
movzx edx, word [esp + 0x2c]
mov dword [esp + 0x40], ecx
mov ecx, dword [edi + 0x24]
mov dword [esp + 0xc8], eax
movaps xmmword [esp + 0x310], xmm0
movups xmm0, xmmword [edi + 0x34]
cmp edx, 0x20b
mov dword [esp + 0xa4], ecx
movaps xmmword [esp + 0x250], xmm0
movss xmm0, dword [edi + 0x44]
movaps xmmword [esp + 0x300], xmm0
jne 0x100485b7
movups xmm0, xmmword [edi + 0x48]
movdqu xmm1, xmmword [edi + 0x58]
mov esi, 0x68
mov eax, edi
mov dword [esp + 0xa0], 0
movaps xmmword [esp + 0x270], xmm0
movdqa xmmword [esp + 0x260], xmm1
mov ebx, esi
lea ecx, [edi + esi]
or ebx, 4
mov edx, ebx
sub edx, esi
call fcn.10006140
mov dword [esp + 0xc0], eax
lea eax, [esi + 8]
mov edx, eax
sub edx, ebx
jb 0x10048ab6
add ebx, edi
mov ecx, ebx
call fcn.10006140
lea ecx, [esi + 0x18]
mov dword [esp + 0xbc], eax
or ecx, 4
cmp ecx, 0xf0
ja 0x10048ad9
lea ecx, [esi + 0x20]
or ecx, 4
cmp ecx, 0xf0
ja 0x10048ad9
lea ecx, [esi + 0x58]
or ecx, 4
cmp ecx, 0xf0
ja 0x10048ad9
lea ecx, [esi + 0x60]
or ecx, 4
cmp ecx, 0xf0
ja 0x10048ad9
lea ecx, [esi + 0x78]
or ecx, 4
cmp ecx, 0xf0
ja 0x10048ad9
lea eax, [esi + 0x80]
cmp eax, 0xf0
ja 0x10048ac9
mov eax, esi
or eax, 0x84
cmp eax, 0xf0
ja 0x10048ad7
movsd xmm0, qword [edi + esi + 8]
movsd xmm1, qword [edi + esi + 0x18]
mov eax, dword [edi + eax]
lea edx, [esi + 0x10]
or edx, 4
mov ebx, dword [edi + edx]
mov edx, dword [edi + esi + 0x78]
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [edi + esi + 0x20]
mov dword [esp + 0xb8], eax
movzx eax, word [esp + 0x4c]
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xb4], edx
movlhps xmm1, xmm0
movsd xmm0, qword [edi + esi + 0x30]
movaps xmmword [esp + 0x2e0], xmm1
movsd xmm1, qword [edi + esi + 0x28]
movlhps xmm1, xmm0
movsd xmm0, qword [edi + esi + 0x40]
movaps xmmword [esp + 0x2d0], xmm1
movsd xmm1, qword [edi + esi + 0x38]
movlhps xmm1, xmm0
movsd xmm0, qword [edi + esi + 0x50]
movaps xmmword [esp + 0x2c0], xmm1
movsd xmm1, qword [edi + esi + 0x48]
movlhps xmm1, xmm0
movsd xmm0, qword [edi + esi + 0x60]
movaps xmmword [esp + 0x2b0], xmm1
movsd xmm1, qword [edi + esi + 0x58]
movlhps xmm1, xmm0
movsd xmm0, qword [edi + esi + 0x70]
movaps xmmword [esp + 0x2a0], xmm1
movsd xmm1, qword [edi + esi + 0x68]
movlhps xmm1, xmm0
movaps xmmword [esp + 0x290], xmm1
movsd xmm1, qword [edi + ecx]
mov ecx, dword [edi + esi + 0x10]
mov word [esp + 0xe0], ax
movzx eax, byte [esp + 0x4e]
movaps xmmword [esp + 0x280], xmm1
mov dword [esp + 0xac], ecx
mov byte [esp + 0xe2], al
jmp 0x10048670
movzx eax, byte [esp + 0x4e]
movzx ecx, word [esp + 0x4c]
xorps xmm0, xmm0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
movaps xmmword [esp + 0x270], xmm0
movaps xmmword [esp + 0x260], xmm0
movaps xmmword [esp + 0x2e0], xmm0
movaps xmmword [esp + 0x2d0], xmm0
movaps xmmword [esp + 0x2c0], xmm0
movaps xmmword [esp + 0x2b0], xmm0
movaps xmmword [esp + 0x2a0], xmm0
movaps xmmword [esp + 0x290], xmm0
movaps xmmword [esp + 0x280], xmm0
movaps xmmword [esp + 0x90], xmm0
mov byte [esp + 0xe2], al
mov word [esp + 0xe0], cx
movdqa xmm0, xmmword [esp + 0x340]
movzx eax, byte [esp + 0xe2]
movzx edx, word [esp + 0xe0]
pextrw ecx, xmm0, 0
mov byte [esp + 0x8a], al
mov word [esp + 0x88], dx
add dword [esp + 8], ecx
jb 0x100488c7
js 0x100488c7
movdqa xmm0, xmmword [esp + 0x330]
movzx ecx, word [ebp + 0xc]
pextrw eax, xmm0, 1
cmp ax, cx
cmovae eax, ecx
lea ecx, [esp + 0x160]
movzx esi, ax
lea edx, [esi + 1]
call fcn.1002ea10
mov eax, dword [esp + 0x160]
test eax, eax
je 0x100488d3
mov edx, dword [esp + 0x166]
movq xmm0, qword [0x6474550]
movzx ecx, word [esp + 0x164]
pshufd xmm2, xmmword [esp + 0x250], 0xee
movaps xmm1, xmmword [0x6474560]
mov dword [esp + 0x7a], edx
movzx edx, word [esp + 0x16a]
movq qword [esp + 0x4c], xmm0
movd dword [esp + 0x54], xmm2
mov dword [esp + 0x58], 0
movd dword [esp + 0x5c], xmm2
mov dword [esp + 0x70], 0
movups xmmword [esp + 0x60], xmm1
mov word [esp + 0x7e], dx
mov dword [esp + 0x74], eax
lea eax, [esp + 0x4c]
mov word [esp + 0x78], cx
lea ecx, [esp + 0x160]
lea edx, [esp + 0x74]
push eax
call fcn.1002e440
add esp, 4
movzx eax, byte [esp + 0x188]
cmp al, 8
jne 0x100488e9
test esi, esi
je 0x10048876
lea ebx, [esp + 0x160]
lea edi, [esp + 0x108]
pxor xmm0, xmm0
mov dword [esp + 0x104], 0
mov dword [esp + 0x100], 0
mov ecx, ebx
mov edx, edi
movdqa xmmword [esp + 0xf0], xmm0
movdqa xmmword [esp + 0xe0], xmm0
push 0x28
lea eax, [esp + 0xe4]
push eax
push dword [esp + 0x10]
call fcn.10049320
add esp, 0xc
mov eax, dword [esp + 0x160]
test eax, eax
je 0x100488f0
cmp dword [esp + 0x164], 0x28
je 0x1004881b
mov ecx, ebx
mov edx, edi
push 0x28
lea eax, [esp + 0xe4]
push eax
push dword [esp + 0x10]
call fcn.100493f0
add esp, 0xc
cmp dword [esp + 0x160], 0
je 0x100488f0
lea eax, [esp + 0xe0]
movsd xmm0, qword [eax]
mov ecx, dword [eax + 0x24]
lea edx, [esp + 0x74]
movsd qword [esp + 0x4c], xmm0
movups xmm0, xmmword [eax + 8]
movups xmmword [esp + 0x54], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0x64], xmm0
mov eax, dword [eax + 0x20]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x4c]
mov dword [esp + 0x6c], ecx
mov ecx, ebx
push eax
call fcn.1002e440
add esp, 4
movzx eax, byte [esp + 0x188]
cmp al, 8
jne 0x100488fc
add dword [esp + 8], 0x28
dec esi
jne 0x1004878d
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x7c]
movzx edx, word [esp + 0x88]
movzx ecx, byte [esp + 0x8a]
movdqa xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x14], eax
mov dword [esp + 0xd0], edi
mov dword [esp + 0xcc], esi
mov word [esp + 0x84], dx
mov byte [esp + 0x86], cl
movq qword [esp + 0x20], xmm0
jmp 0x10047773
mov word [esp + 0x20], 0x600
jmp 0x10047767
movzx eax, byte [esp + 0x164]
mov byte [esp + 0x20], 1
mov byte [esp + 0x21], al
jmp 0x10047767
mov byte [esp + 0x20], 1
jmp 0x10048902
movzx eax, byte [esp + 0x164]
mov cl, 2
jmp 0x100488fe
mov cl, 1
mov byte [esp + 0x20], cl
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
mov byte [esp + 0x21], al
call fcn.1002f110
jmp 0x10047767
mov ecx, 0x647d9dc
mov edx, 0x2b
push 0x647a4c0
push 0x647a3c0
lea eax, [esp + 0x168]
push eax
call fcn.10008840
add esp, 0xc
ud2
mov ecx, 0x647dbcc
mov edx, 0x2b
push 0x647a4a0
call fcn.10007ff0
add esp, 4
ud2
mov ecx, 0x647dbcc
mov edx, 0x2b
push 0x647a4b0
call fcn.10007ff0
add esp, 4
ud2
lea eax, [esp + 0x74]
lea edx, [esp + 0x108]
lea ecx, [esp + 0x4c]
mov dword [esp + 0x160], 0x647ab60
mov dword [esp + 0x164], 3
mov dword [esp + 0x170], 0
mov dword [esp + 0x168], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 0x646de10
mov dword [esp + 0x54], edx
lea ecx, [esp + 0x160]
mov edx, 0x647ab78
mov dword [esp + 0x58], 0x646de10
mov dword [esp + 0x16c], 2
call fcn.100075c0
ud2
mov ecx, 0x647dbcc
mov edx, 0x2b
push 0x647a470
call fcn.10007ff0
add esp, 4
ud2
mov ecx, 0x647dbcc
mov edx, 0x2b
push 0x647a480
call fcn.10007ff0
add esp, 4
ud2
mov ecx, 0x647dbcc
mov edx, 0x2b
push 0x647a490
call fcn.10007ff0
add esp, 4
ud2
lea eax, [esp + 0x74]
lea edx, [esp + 0x108]
lea ecx, [esp + 0x4c]
mov dword [esp + 0x160], 0x647ab20
mov dword [esp + 0x164], 3
mov dword [esp + 0x170], 0
mov dword [esp + 0x168], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 0x643d260
mov dword [esp + 0x54], edx
lea ecx, [esp + 0x160]
mov edx, 0x647ab38
mov dword [esp + 0x58], 0x643d260
mov dword [esp + 0x16c], 2
call fcn.100075c0
ud2
mov ecx, 0x647d9dc
mov edx, 0x2b
mov byte [esp + 0x160], 1
push 0x647a4d0
push 0x647a3b0
jmp 0x1004892c
mov ecx, ebx
mov edx, eax
push 0x647af68
call fcn.100083d0
add esp, 4
ud2
mov ecx, eax
mov edx, 0xf0
push 0x647af88
jmp 0x10048ae3
mov ecx, eax
mov edx, 0xf0
push 0x647af78
call fcn.10007b00
add esp, 4
ud2