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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1c0
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
cmp edi, 0xfffffff
ja 0x47038f
mov ebx, dword [ebp + 0xc]
test edi, edi
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd8], edi
mov dword [esp + 0xdc], edi
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe4], 0
je 0x4703b2
movzx eax, byte [ebx]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.00449750
add esp, 8
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x4703cb
mov eax, 3
cmp edi, 1
jne 0x47049d
mov dword [esp + 0x50], 2
mov dword [esp], 1
mov ecx, 1
mov edx, ecx
mov ebx, ecx
and edx, 0xffffff00
movzx ecx, bl
mov dword [esp + 0x54], eax
or ecx, edx
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
mov ebx, ecx
shr ecx, 0x18
jmp 0x47041d
mov edx, 0xa
mov dword [esp + 0xc], 0
mov dword [esp + 0x50], 0
mov ecx, edi
mov dword [esp], 0
jmp 0x470450
xor edi, edi
mov edx, 3
mov esi, 1
xor ecx, ecx
xor ebx, ebx
mov dword [esp], 1
jmp 0x47041d
mov dword [esp], eax
movzx eax, byte [esp + 0x16]
movzx ebx, word [esp + 0x14]
movzx ecx, byte [esp + 0x17]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
movsd xmm1, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x34]
shl eax, 0x10
or ebx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
movzx ecx, cl
and ebx, 0xffffff
mov dword [esp + 0x50], edi
shl ecx, 0x18
or ebx, ecx
mov ecx, edx
mov dword [esp + 4], ebx
shr ecx, 0x18
movzx ecx, cl
and edx, 0xffffff
mov edi, esi
mov esi, dword [esp + 0x4c]
shl ecx, 0x18
or edx, ecx
mov ecx, dword [esp + 4]
mov ebx, edx
mov edx, dword [esp]
mov dword [eax + 4], 4
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ebx
mov dword [eax + 0x14], edi
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0xc]
mov dword [eax + 0x18], edi
mov dword [eax + 0x1c], edx
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 8]
movlps qword [eax + 0x20], xmm1
mov dword [eax + 0x28], edi
movlps qword [eax + 0x2c], xmm2
mov dword [eax + 0x34], esi
mov dword [eax + 0x38], edx
mov dword [eax], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movzx eax, byte [esp + 0x16]
movzx edx, word [esp + 0x14]
mov dword [esp + 0xe0], 2
shl eax, 0x10
or edx, eax
movzx eax, byte [ebx + 1]
test al, al
js 0x4708bc
mov ebx, eax
mov dword [esp + 4], 2
cmp dl, 9
jne 0x470998
mov edi, dword [esp + 0xdc]
xor eax, eax
sub edi, dword [esp + 4]
cmovb edi, eax
xor ecx, ecx
mov eax, 0xff
cmp edi, ebx
setne cl
cmovbe eax, ecx
test al, al
je 0x470507
movzx eax, al
cmp eax, 0xff
jne 0x470a32
lea eax, [esp + 0xd4]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], 0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046ee60
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x4709be
movzx eax, word [esp + 0x18]
cmp al, 1
jne 0x470ac2
mov esi, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
push esi
call fcn.0046eb20
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x470b58
lea eax, [esp + 0xf4]
push esi
push dword [esp + 0x64]
push eax
call fcn.004494a0
add esp, 0xc
mov eax, dword [esp + 0xf4]
cmp eax, 2
jne 0x470bb2
mov edi, dword [esp + 0xfc]
cmp edi, 0x10000000
jae 0x470cff
mov eax, dword [esp + 0xf8]
mov ecx, eax
mov byte [esp + 0x70], al
shr eax, 0x18
shr ecx, 8
mov byte [esp + 0x73], al
mov word [esp + 0x71], cx
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0x10]
push edi
call fcn.0046ddf0
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x470d50
movzx ebx, byte [esp + 0x14]
mov eax, ebx
shr al, 7
inc al
movzx eax, al
cmp esi, eax
jne 0x470db4
cmp bl, 2
jae 0x470de0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 8], eax
movdqa xmmword [esp + 0xc0], xmm0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
movq xmm0, qword [esp + 0x14]
mov eax, dword [esp + 0x1c]
movdqa xmmword [esp + 0x140], xmm0
mov dword [esp + 0x48], eax
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0xc], eax
movdqa xmmword [esp + 0x90], xmm0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0x44], eax
movdqa xmmword [esp + 0x80], xmm0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0x4c], eax
movdqa xmmword [esp + 0x130], xmm0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0x12c], eax
movdqa xmmword [esp + 0x180], xmm0
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
mov dword [esp + 0x128], eax
movdqa xmmword [esp + 0x170], xmm0
lea edi, [esp + 0x10]
lea edx, [esp + 0x60]
mov ecx, edi
call fcn.0046e6a0
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp], eax
jne 0x470e0b
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x14]
movq xmm0, qword [esp + 0x18]
cmp ecx, dword [esp + 0x68]
mov dword [esp], eax
movdqa xmmword [esp + 0x160], xmm0
jbe 0x470e59
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x10], 0
jne 0x470e59
mov ecx, dword [eax + 0xc]
cmp dword [eax + 4], ecx
jbe 0x470e59
mov eax, dword [eax]
movzx eax, byte [eax + ecx]
push eax
push edi
call fcn.00449750
add esp, 8
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp + 0x50], eax
jne 0x470f4c
cmp byte [esp + 0x14], 9
jne 0x470e59
lea edi, [esp + 0x10]
lea edx, [esp + 0x60]
mov ecx, edi
call fcn.0046ee60
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp + 0x50], eax
jne 0x4710d5
movzx eax, byte [esp + 0x1a]
mov esi, dword [esp + 0x14]
movzx ecx, word [esp + 0x18]
shl eax, 0x10
or ecx, eax
push 9
push ecx
push edi
call fcn.00449660
add esp, 0xc
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp + 0x50], eax
jne 0x47114a
lea ecx, [esp + 0x10]
lea edx, [esp + 0x60]
push esi
call fcn.0046ebe0
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp + 0x50], eax
jne 0x471477
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x70], 4
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
cmp ecx, edx
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], ecx
mov dword [esp + 0xf0], edx
jbe 0x47158d
mov dword [esp + 0x7c], 4
mov dword [esp + 0x6c], 0
jmp 0x471257
cmp al, 0x80
je 0x470aaa
cmp al, 0x85
jae 0x470aaa
mov ecx, eax
xor ecx, 0x80
mov dword [esp + 0x50], ecx
je 0x470a83
mov dword [esp + 8], eax
mov eax, 2
add ebx, 2
mov dword [esp], 1
mov dword [esp + 0x54], edx
mov dword [esp + 0xc0], 0
sub eax, edi
mov dword [esp + 0xc], eax
xor eax, eax
lea edx, [eax + 2]
cmp edx, edi
ja 0x470b02
mov ecx, dword [esp + 0xc]
lea esi, [ecx + eax]
lea ecx, [eax + 3]
test esi, esi
je 0x470b25
cmp eax, 0xffffffd
je 0x470b42
mov edx, dword [esp + 0xc0]
mov dword [esp + 0xe0], ecx
lea ecx, [ebx + eax]
inc eax
shl edx, 8
test esi, esi
cmove ecx, esi
movzx ecx, byte [ecx]
or ecx, edx
cmp dword [esp + 0x50], eax
mov dword [esp + 0xc0], ecx
jne 0x470908
mov ebx, dword [esp + 0xc0]
cmp ebx, 0x10000000
jae 0x470cd1
mov esi, ebx
add eax, 2
mov cl, 1
mov ch, 0x81
and esi, 0xffffff80
mov dword [esp + 4], eax
cmp esi, 0x80
jne 0x470ce2
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 8]
jmp 0x470a9e
and edx, 0xffffff
xor ecx, ecx
mov dword [esp], 0
mov dword [esp + 4], 0
mov esi, edx
mov edx, 0x911
mov eax, dword [ebp + 8]
jmp 0x470438
movdqu xmm0, xmmword [esp + 0x14]
mov dword [esp], eax
movdqa xmmword [esp + 0x150], xmm0
pshufd xmm1, xmm0, 0x55
movd esi, xmm0
mov eax, dword [esp + 0x24]
movzx ecx, byte [esp + 0x157]
movd edx, xmm1
pshufd xmm1, xmm0, 0xee
pshufd xmm0, xmm0, 0xff
movsd xmm2, qword [esp + 0x34]
mov ebx, dword [esp + 0x40]
movd dword [esp + 0x48], xmm0
movd edi, xmm1
movsd xmm1, qword [esp + 0x28]
shrd esi, edx, 8
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
movzx eax, byte [esp + 0x150]
jmp 0x470c59
xor ecx, ecx
add ebx, dword [esp + 4]
mov edx, 0xa
jb 0x470c8b
mov eax, dword [ebp + 8]
cmp ebx, 0xfffffff
ja 0x470c7e
add edi, dword [esp + 4]
jb 0x470ca4
cmp edi, 0x10000000
jae 0x470ca4
mov esi, ebx
mov ebx, edi
mov dword [esp], 1
xor ecx, ecx
mov edx, 3
mov dword [esp + 0x50], ebx
jmp 0x470438
xor ebx, ebx
mov dword [esp + 4], 2
lea ecx, [ebx - 0x1000000]
cmp ecx, 0xf000000
mov ch, 0x84
setb cl
test cl, cl
je 0x470aaa
cmp ch, al
je 0x4704cd
shl edx, 8
xor ecx, ecx
mov dword [esp], 0
or edx, 5
mov dword [esp + 0x54], edx
jmp 0x47037a
movzx ecx, byte [esp + 0x1a]
mov edi, eax
mov byte [esp + 0x10], 0x11
mov word [esp + 0x11], 1
mov dword [esp], 0
movzx eax, al
xor esi, esi
movzx edx, word [esp + 0x10]
shl ecx, 0x10
or edi, ecx
movzx ecx, byte [esp + 0x12]
and edi, 0xffffff
shl ecx, 0x10
or edx, ecx
xor ecx, ecx
jmp 0x470c59
lea eax, [edi + 1]
cmp edi, 0xfffffff
mov ecx, 3
mov dword [esp + 0x50], eax
mov eax, 0xa
cmovae ecx, eax
mov eax, ecx
mov ecx, edi
jmp 0x470367
cmp edx, 0xffffffe
jbe 0x470cc1
mov dword [esp], 0
mov eax, 0xa
jmp 0x470367
mov dword [esp], 0
mov ecx, 0x10000000
mov eax, 0xa
jmp 0x470367
movsd xmm1, qword [esp + 0x34]
movsd xmm2, qword [esp + 0x2c]
movsd xmm0, qword [esp + 0x3c]
movsd qword [esp + 0x118], xmm1
movsd xmm1, qword [esp + 0x24]
movsd qword [esp + 0x110], xmm2
movsd xmm2, qword [esp + 0x14]
movsd qword [esp + 0x120], xmm0
movsd qword [esp + 0x108], xmm1
movsd xmm1, qword [esp + 0x1c]
movsd qword [esp + 0xf8], xmm2
movsd qword [esp + 0x100], xmm1
movdqu xmm0, xmmword [esp + 0xf8]
mov dword [esp], eax
movdqa xmmword [esp + 0x1a0], xmm0
pshufd xmm1, xmm0, 0x55
movd esi, xmm0
mov edi, dword [esp + 0x108]
movd eax, xmm1
pshufd xmm1, xmm0, 0xee
movsd xmm2, qword [esp + 0x118]
pshufd xmm0, xmm0, 0xff
movd dword [esp + 0xc0], xmm1
movsd xmm1, qword [esp + 0x10c]
mov edx, eax
mov ecx, eax
shrd esi, eax, 8
movzx ebx, byte [esp + 0x1a0]
shr edx, 8
shr ecx, 0x18
movd dword [esp + 0x48], xmm0
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x114]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x120]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x124]
mov dword [esp + 8], edi
shl edx, 8
movzx eax, al
mov edi, dword [esp + 0xc0]
or eax, edx
mov edx, eax
movzx eax, bl
mov ebx, dword [esp + 8]
shl esi, 8
mov dword [esp + 8], ebx
or esi, eax
mov dword [esp + 4], esi
mov ebx, dword [esp + 0x48]
mov eax, dword [ebp + 8]
mov esi, edi
and edx, 0xffffff
mov dword [esp + 0x50], ebx
jmp 0x470438
mov esi, ebx
mov dword [esp + 4], ebx
mov edx, 0xa
jmp 0x470c94
mov eax, dword [ebp + 8]
mov esi, ebx
mov dword [esp + 4], ebx
mov dword [esp], 0
mov dword [esp + 0x50], ebx
jmp 0x470438
mov esi, ebx
mov dword [esp + 4], edi
mov dword [esp], 0
xor ecx, ecx
mov edx, 0xa
mov dword [esp + 0x50], ebx
jmp 0x470438
mov dword [esp + 0x50], ecx
mov ecx, edi
mov eax, 3
jmp 0x470367
mov dword [esp], 0
mov eax, 0xa
jmp 0x470371
mov eax, dword [esp + 8]
lea esi, [edx - 0x100]
mov ch, 0x82
cmp esi, 0xff00
jae 0x470d33
mov edx, dword [esp + 0x54]
jmp 0x470a9e
movdqu xmm0, xmmword [esp + 0xfc]
mov dword [esp + 0xc0], edi
mov esi, edi
mov al, 0xa
shr esi, 8
movdqa xmmword [esp + 0x190], xmm0
movzx ebx, byte [esp + 0x190]
mov dword [esp], 0
jmp 0x470c41
add edx, 0xffff0000
mov ch, 0x83
cmp edx, 0xff0000
mov edx, dword [esp + 0x54]
jae 0x470a8d
jmp 0x470a9e
mov dword [esp], eax
movzx eax, byte [esp + 0x17]
movzx esi, word [esp + 0x15]
movzx edx, word [esp + 0x18]
movzx ecx, byte [esp + 0x1b]
mov edi, dword [esp + 0x1c]
movsd xmm1, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x34]
mov ebx, dword [esp + 0x40]
shl eax, 0x10
or esi, eax
movzx eax, byte [esp + 0x1a]
shl eax, 0x10
or edx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
movzx eax, byte [esp + 0x14]
jmp 0x470c59
mov byte [esp + 0x10], 6
mov word [esp + 0x11], 1
mov dword [esp], 0
xor ecx, ecx
movzx eax, byte [esp + 0x12]
movzx edx, word [esp + 0x10]
shl eax, 0x10
or edx, eax
movzx eax, al
jmp 0x470c59
mov byte [esp + 0x10], 0x15
mov word [esp + 0x11], 1
mov dword [esp], 0
xor ecx, ecx
movzx eax, byte [esp + 0x12]
movzx edx, word [esp + 0x10]
shl eax, 0x10
or edx, eax
xor eax, eax
jmp 0x470c59
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
movsd xmm1, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x34]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x44], esi
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x48], ecx
mov ecx, edx
mov dword [esp + 4], eax
shr ecx, 0x18
mov dword [esp + 0x4c], ebx
mov dword [esp + 8], esi
jmp 0x470c66
test bl, bl
je 0x470e7f
mov eax, dword [esp + 0x60]
mov edx, 0x115
xor ecx, ecx
mov dword [esp], 1
mov byte [eax + 0x10], 1
mov eax, dword [eax + 0xc]
mov dword [esp + 4], eax
jmp 0x470c66
xor esi, esi
cmp dword [esp + 8], 0
je 0x470ed3
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
xor eax, eax
sub ebx, ecx
cmovb ebx, eax
mov dword [esp + 0x50], ebx
jbe 0x470f2a
mov edi, ecx
test esi, esi
je 0x470eba
test edx, edx
je 0x470eba
mov eax, dword [0x607460]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov edx, 0x13
mov dword [esp], 1
xor ecx, ecx
mov esi, edi
mov dword [esp + 4], edi
jmp 0x4709b6
movdqa xmm1, xmmword [esp + 0xc0]
movaps xmm2, xmmword [esp + 0x130]
pshufd xmm0, xmm1, 0x55
movss dword [esp + 8], xmm2
movd dword [esp], xmm1
movaps xmm1, xmmword [esp + 0x90]
movaps xmm2, xmmword [esp + 0x80]
movd dword [esp + 4], xmm0
movdqa xmm0, xmmword [esp + 0x140]
movd edx, xmm0
pshufd xmm0, xmm0, 0x55
mov ecx, edx
movd edi, xmm0
shr ecx, 0x18
jmp 0x470c66
mov edi, dword [esp + 0xe0]
cmp byte [esp + 0xe4], 0
je 0x470fd9
mov dword [esp + 0x54], 1
jmp 0x470ff9
movzx eax, byte [esp + 0x16]
movzx ecx, word [esp + 0x14]
movzx edx, word [esp + 0x24]
movzx edi, word [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
shl eax, 0x10
movaps xmmword [esp + 0x90], xmm0
movq xmm0, qword [esp + 0x34]
mov dword [esp + 8], ebx
or ecx, eax
movzx eax, byte [esp + 0x17]
mov dword [esp + 4], ecx
movzx ecx, byte [esp + 0x26]
movdqa xmmword [esp + 0x80], xmm0
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [esp + 0x32]
mov dword [esp], edx
mov edx, dword [esp + 0x18]
shl ecx, 0x10
or edi, ecx
movzx ecx, byte [esp + 0x27]
mov byte [esp + 0xc], cl
movzx ecx, byte [esp + 0x33]
mov byte [esp + 0x44], cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x4c], ecx
jmp 0x47150d
mov eax, dword [esp + 0xdc]
cmp eax, edi
jbe 0x471025
mov ecx, eax
xor eax, eax
mov dword [esp + 0x54], 0x13
sub ecx, edi
cmovb ecx, eax
mov dword [esp + 0x50], ecx
test esi, esi
je 0x471010
test edx, edx
je 0x471010
mov eax, dword [0x607460]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [ebp + 8]
mov ebx, dword [esp + 0x54]
mov dword [esp], 1
mov ecx, edi
jmp 0x470452
movaps xmm0, xmmword [esp + 0xc0]
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0xc]
unpcklpd xmm0, xmmword [esp + 0x140]
mov dword [eax], ecx
movups xmmword [eax + 4], xmm0
movaps xmm0, xmmword [esp + 0x90]
mov dword [eax + 0x14], edi
mov dword [eax + 0x18], ebx
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x4c]
movlps qword [eax + 0x1c], xmm0
movaps xmm0, xmmword [esp + 0x80]
mov dword [eax + 0x24], edi
mov edi, dword [esp + 0x12c]
movlps qword [eax + 0x28], xmm0
movaps xmm0, xmmword [esp + 0x130]
mov dword [eax + 0x30], ebx
mov ebx, dword [esp + 0x128]
movlps qword [eax + 0x34], xmm0
movaps xmm0, xmmword [esp + 0x180]
mov dword [eax + 0x3c], edi
mov edi, dword [esp]
movlps qword [eax + 0x40], xmm0
movaps xmm0, xmmword [esp + 0x170]
mov dword [eax + 0x48], ebx
movlps qword [eax + 0x4c], xmm0
movdqa xmm0, xmmword [esp + 0x160]
mov dword [eax + 0x54], edi
movq qword [eax + 0x58], xmm0
mov dword [eax + 0x60], esi
mov dword [eax + 0x64], edx
mov edx, dword [esp + 0x6c]
mov dword [eax + 0x68], edx
jmp 0x470495
mov eax, dword [esp + 0x14]
movzx edx, word [esp + 0x18]
movzx ecx, word [esp + 0x24]
movzx edi, word [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x1a]
movaps xmmword [esp + 0x90], xmm0
movq xmm0, qword [esp + 0x34]
shl eax, 0x10
movdqa xmmword [esp + 0x80], xmm0
or edx, eax
movzx eax, byte [esp + 0x26]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x32]
mov dword [esp], ecx
shl eax, 0x10
or edi, eax
movzx eax, byte [esp + 0x27]
mov byte [esp + 0xc], al
movzx eax, byte [esp + 0x33]
mov byte [esp + 0x44], al
movzx eax, byte [esp + 0x1b]
mov dword [esp + 0x58], eax
jmp 0x4714da
mov eax, dword [esp + 0x18]
movzx ecx, word [esp + 0x24]
movsd xmm0, qword [esp + 0x28]
movzx edi, word [esp + 0x30]
mov edx, eax
shr eax, 0x18
movaps xmmword [esp + 0x90], xmm0
movq xmm0, qword [esp + 0x34]
mov dword [esp + 0x58], eax
movzx eax, byte [esp + 0x26]
movdqa xmmword [esp + 0x80], xmm0
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x32]
mov dword [esp], ecx
movzx ecx, byte [esp + 0x33]
shl eax, 0x10
or edi, eax
mov ah, byte [esp + 0x27]
mov byte [esp + 0x44], cl
mov byte [esp + 0xc], ah
jmp 0x4714d2
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0xbc]
lea eax, [edi + edi*8]
inc edi
mov dword [edx + eax*4], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x6c], edi
mov word [edx + eax*4 + 4], cx
shr ecx, 0x10
mov byte [edx + eax*4 + 6], cl
mov ecx, dword [esp + 0x58]
mov byte [edx + eax*4 + 7], cl
mov ecx, dword [esp + 0xb0]
mov dword [edx + eax*4 + 8], esi
mov esi, dword [esp + 0xac]
mov dword [edx + eax*4 + 0xc], ecx
mov ecx, dword [esp + 0xb4]
mov word [edx + eax*4 + 0x10], cx
shr ecx, 0x10
mov byte [edx + eax*4 + 0x12], cl
mov ecx, dword [esp + 0xb8]
mov byte [edx + eax*4 + 0x13], bh
mov bh, byte [esp + 0x5f]
mov dword [edx + eax*4 + 0x14], ecx
mov ecx, dword [esp + 0xa4]
mov dword [edx + eax*4 + 0x18], ecx
mov ecx, dword [esp + 0xa8]
mov word [edx + eax*4 + 0x1c], cx
shr ecx, 0x10
mov byte [edx + eax*4 + 0x1e], cl
mov byte [edx + eax*4 + 0x1f], bh
mov dword [edx + eax*4 + 0x20], esi
mov dword [esp + 0x78], edi
mov eax, dword [esp + 0xec]
cmp eax, dword [esp + 0xf0]
jbe 0x4718bb
lea ecx, [esp + 0x10]
lea edx, [esp + 0xe8]
call fcn.0046f4d0
movzx esi, byte [esp + 0x1a]
mov edx, dword [esp + 0x10]
movzx ecx, word [esp + 0x18]
mov eax, dword [esp + 0x14]
shl esi, 0x10
mov dword [esp + 4], eax
mov dword [esp + 0x50], edx
or ecx, esi
cmp edx, 2
mov dword [esp + 0x54], ecx
jne 0x4715a9
push 9
push dword [esp + 0x58]
lea eax, [esp + 0x18]
push eax
call fcn.00449660
add esp, 0xc
mov eax, dword [esp + 0x10]
cmp eax, 2
mov dword [esp + 0x50], eax
jne 0x47160a
lea ecx, [esp + 0x10]
lea edx, [esp + 0xe8]
push dword [esp + 4]
call fcn.0046ec80
add esp, 4
mov eax, dword [esp + 0x14]
movzx ecx, word [esp + 0x18]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x1a]
mov dword [esp + 0x50], edx
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x1b]
cmp edx, 2
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], eax
jne 0x4716a9
mov eax, dword [esp + 4]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x54]
mov word [esp + 0xf8], ax
shr eax, 0x10
mov byte [esp + 0xfa], al
mov eax, dword [esp + 0x58]
mov byte [esp + 0xfb], al
mov dword [esp + 0xfc], esi
lea ecx, [esp + 0x10]
lea edx, [esp + 0xf4]
call fcn.0046de70
mov eax, dword [esp + 0x14]
movzx ecx, word [esp + 0x18]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xbc], eax
movzx eax, byte [esp + 0x1a]
mov dword [esp + 0x50], edx
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x1b]
cmp edx, 2
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], eax
jne 0x471703
lea ecx, [esp + 0x10]
lea edx, [esp + 0xf4]
call fcn.0046de70
movzx edi, byte [esp + 0x1a]
mov ecx, dword [esp + 0x10]
movzx edx, word [esp + 0x18]
mov eax, dword [esp + 0x14]
mov bh, byte [esp + 0x1b]
shl edi, 0x10
mov dword [esp + 0x50], ecx
mov dword [esp + 0xb0], eax
or edx, edi
cmp ecx, 2
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ecx
jne 0x47176a
lea ecx, [esp + 0x10]
lea edx, [esp + 0xf4]
call fcn.0046de70
movzx edi, byte [esp + 0x1a]
movzx edx, word [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
shl edi, 0x10
mov dword [esp + 0x50], ecx
mov dword [esp + 0xa4], eax
or edx, edi
cmp ecx, 2
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xa8], edx
movzx edx, byte [esp + 0x1b]
mov dword [esp + 0xac], ecx
mov byte [esp + 0x5f], dl
jne 0x4717da
mov ecx, dword [esp + 0xfc]
mov eax, dword [esp + 0xf8]
cmp eax, ecx
mov dword [esp + 4], ecx
ja 0x47188f
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x74]
jne 0x4711ab
mov edx, dword [esp + 0x6c]
lea ecx, [esp + 0x70]
call fcn.0046fc90
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x6c], ecx
jmp 0x4711ab
movzx eax, byte [esp + 0x26]
movzx edx, word [esp + 0x24]
movsd xmm0, qword [esp + 0x28]
movzx esi, byte [esp + 0x32]
mov ecx, dword [esp + 0x18]
movzx edi, word [esp + 0x30]
shl eax, 0x10
movaps xmmword [esp + 0x90], xmm0
movq xmm0, qword [esp + 0x34]
shl esi, 0x10
or edx, eax
or edi, esi
mov dword [esp], edx
mov dh, byte [esp + 0x27]
mov dl, byte [esp + 0x33]
movdqa xmmword [esp + 0x80], xmm0
mov byte [esp + 0xc], dh
mov byte [esp + 0x44], dl
mov edx, ecx
shr ecx, 0x18
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 8], ecx
movzx ecx, byte [esp + 0x58]
mov eax, dword [esp + 4]
and edx, 0xffffff
shl ecx, 0x18
shr eax, 0x18
or edx, ecx
mov ecx, dword [esp + 4]
movzx eax, al
mov ebx, dword [esp]
and edi, 0xffffff
movaps xmm1, xmmword [esp + 0x90]
movaps xmm2, xmmword [esp + 0x80]
shl eax, 0x18
and ecx, 0xffffff
and ebx, 0xffffff
or ecx, eax
movzx eax, byte [esp + 0xc]
shl eax, 0x18
or eax, ebx
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x44]
shl eax, 0x18
or eax, edi
mov edi, esi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x50]
test eax, eax
cmove ecx, eax
add ecx, dword [esp + 0x68]
setb al
cmp ecx, 0x10000000
mov dword [esp + 4], ecx
not al
setb cl
and cl, al
movzx eax, cl
mov ecx, edx
mov dword [esp], eax
shr ecx, 0x18
jmp 0x470c66
test bl, bl
je 0x470e5d
xor edx, edx
mov esi, 4
mov dword [esp + 0x6c], 0
jmp 0x470e81
movzx edi, byte [esp + 0x26]
movzx ecx, word [esp + 0x24]
movsd xmm0, qword [esp + 0x28]
movzx ebx, byte [esp + 0x32]
movzx eax, byte [esp + 0x1b]
movzx edx, byte [esp + 0x27]
mov esi, dword [esp + 0x1c]
shl edi, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
shl ebx, 0x10
mov dword [esp + 0x58], eax
mov byte [esp + 0xc], dl
or ecx, edi
movzx edi, word [esp + 0x30]
mov dword [esp], ecx
movzx ecx, byte [esp + 0x33]
movaps xmmword [esp + 0x80], xmm0
or edi, ebx
mov byte [esp + 0x44], cl
jmp 0x47184f
movzx eax, byte [esp + 0x1a]
movzx ecx, word [esp + 0x18]
movzx edx, byte [esp + 0x26]
movzx esi, byte [esp + 0x32]
movsd xmm0, qword [esp + 0x28]
movzx edi, word [esp + 0x30]
movzx ebx, byte [esp + 0x33]
shl eax, 0x10
shl edx, 0x10
shl esi, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
mov byte [esp + 0x44], bl
or ecx, eax
movzx eax, byte [esp + 0x1b]
or edi, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
movzx ecx, word [esp + 0x24]
movaps xmmword [esp + 0x80], xmm0
mov dword [esp + 0x58], eax
or ecx, edx
mov edx, dword [esp + 0x20]
mov dword [esp], ecx
movzx ecx, byte [esp + 0x27]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x40]
mov byte [esp + 0xc], cl
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], edx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 4], ecx
cmp dword [esp + 0x74], 0
jne 0x47186e
jmp 0x471880
movzx edi, byte [esp + 0x26]
movzx ecx, word [esp + 0x24]
movsd xmm0, qword [esp + 0x28]
movzx edx, byte [esp + 0x32]
mov eax, dword [esp + 0x20]
shl edi, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
shl edx, 0x10
mov dword [esp + 0x48], eax
or ecx, edi
movzx edi, word [esp + 0x30]
mov dword [esp], ecx
mov ch, byte [esp + 0x27]
mov cl, byte [esp + 0x33]
movaps xmmword [esp + 0x80], xmm0
or edi, edx
mov byte [esp + 0xc], ch
mov byte [esp + 0x44], cl
jmp 0x471857
movzx edi, byte [esp + 0x26]
movzx ecx, word [esp + 0x24]
movsd xmm0, qword [esp + 0x28]
movzx ebx, byte [esp + 0x32]
mov eax, dword [esp + 0x20]
movzx edx, byte [esp + 0x33]
shl edi, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
shl ebx, 0x10
mov dword [esp + 0x48], eax
mov byte [esp + 0x44], dl
or ecx, edi
movzx edi, word [esp + 0x30]
mov dword [esp], ecx
movzx ecx, byte [esp + 0x27]
movaps xmmword [esp + 0x80], xmm0
or edi, ebx
mov byte [esp + 0xc], cl
mov ecx, dword [esp + 0xbc]
mov dword [esp + 4], ecx
jmp 0x471857
movzx eax, byte [esp + 0x26]
movzx ecx, word [esp + 0x24]
movzx edi, word [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov esi, dword [esp + 0xb8]
shl eax, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
or ecx, eax
movzx eax, byte [esp + 0x32]
mov dword [esp], ecx
movaps xmmword [esp + 0x80], xmm0
shl eax, 0x10
or edi, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x27]
mov byte [esp + 0xc], al
movzx eax, byte [esp + 0x33]
mov byte [esp + 0x44], al
mov al, bh
jmp 0x47184b
movzx eax, byte [esp + 0x26]
movzx ecx, word [esp + 0x24]
movzx edi, word [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov esi, dword [esp + 0xac]
shl eax, 0x10
movaps xmmword [esp + 0x90], xmm0
movsd xmm0, qword [esp + 0x34]
or ecx, eax
movzx eax, byte [esp + 0x32]
mov dword [esp], ecx
movaps xmmword [esp + 0x80], xmm0
shl eax, 0x10
or edi, eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x27]
mov byte [esp + 0xc], al
movzx eax, byte [esp + 0x33]
mov byte [esp + 0x44], al
movzx eax, byte [esp + 0x5f]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov dword [esp + 8], ecx
cmp dword [esp + 0x74], 0
je 0x471880
mov eax, dword [0x607460]
push dword [esp + 0x7c]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp + 0x54]
and edx, 0xffffff
jmp 0x4714f6
mov esi, dword [esp + 4]
xor ecx, ecx
mov dword [esp + 0x54], 0x13
mov dword [esp + 0x50], 1
sub eax, esi
cmovb eax, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], eax
cmp dword [esp + 0x74], 0
jne 0x47186e
jmp 0x471880
mov esi, dword [esp + 0x70]
test bl, bl
mov edx, dword [esp + 0x74]
setne al
test esi, esi
setne ah
cmp al, ah
je 0x470e81
mov eax, dword [esp + 0x60]
xor ecx, ecx
test esi, esi
mov dword [esp], 1
mov byte [eax + 0x10], 1
mov eax, dword [eax + 0xc]
mov dword [esp + 4], eax
je 0x471908
test edx, edx
je 0x471908
mov eax, dword [0x607460]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
xor ecx, ecx
jmp 0x471908
mov edx, 0x115
jmp 0x470c66