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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1d0
mov eax, dword [ebp + 8]
call 0x52b407
pop esi
movzx ebx, byte [eax]
cmp bl, 0x4b
jne 0x52c27e
mov dword [esp + 0x118], ecx
mov ecx, dword [eax + 4]
mov ebx, dword [edx + 8]
mov dword [esp + 0x34], esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0xb0], edx
mov dword [esp + 0x64], ecx
mov ch, byte [eax + 8]
mov eax, dword [ebx + 0x120]
mov dword [esp + 0x24], esi
cmp eax, 2
mov byte [esp + 0xe4], ch
jne 0x52cb5b
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 8
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 8
mov dword [esp + 0x108], 0
mov dword [esp + 0xdc], 0
lea eax, [esi + 0xa8]
mov dword [esp + 0x84], ebx
mov ecx, dword [esi + 0xf0]
mov edi, dword [esi + 0xc4]
mov edx, dword [esi + 0xc0]
add ecx, 8
test edi, edi
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], edi
mov dword [esp + 0xc0], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc8], 0
je 0x52ca26
mov edx, dword [esi + 0xc8]
mov ecx, dword [esp + 0x64]
mov ebx, 0
mov dword [esp + 0xf0], 8
mov dword [esp + 0xac], 0
mov edi, edx
lea eax, [ecx + 0x60]
add ecx, 0x58
mov dword [esp + 0x58], edx
and edi, 0xff00
mov dword [esp + 0x2c], edi
mov edi, edx
shr edi, 0x10
cmp di, 5
mov dword [esp + 0x60], edi
cmovae ecx, eax
mov eax, dword [esi + 0xe8]
setae byte [esp + 0x11c]
mov dword [esp + 0xfc], ecx
mov dword [esp + 0x114], eax
mov eax, dword [esi + 0x100]
mov dword [esp + 0x30], eax
movzx eax, dh
mov dword [esp + 0x38], eax
mov eax, dword [esi + 0xf8]
mov dword [esp + 0x5c], eax
movzx eax, dl
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0xec]
mov dword [esp + 0xf4], eax
lea eax, [esp + 0x130]
mov dword [esp + 0x12c], eax
mov ecx, dword [esp + 0xc0]
xor eax, eax
mov edi, dword [esp + 0xb8]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], 0
mov dword [esp + 0x40], 0
cmp byte [ecx + 0x21], 8
mov edx, dword [ecx + 0x1c]
mov esi, dword [ecx + 0x24]
mov dword [esp + 0x18], edi
lea ebx, [edi + 1]
sete al
add edx, dword [ecx + 0x18]
add esi, edi
xor ecx, ecx
lea eax, [esi + eax*8]
sub eax, edx
add eax, 4
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0xc], eax
nop
movzx eax, byte [ebx - 1]
cmp ecx, 0x3f
mov byte [esp + 0x10], al
jne 0x52b5f5
cmp al, 2
jae 0x52c2b6
mov edx, eax
xor edi, edi
mov esi, 0
and dl, 0x7f
movzx edx, dl
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
cmovne edx, esi
or dword [esp + 0x40], edi
or dword [esp + 0x20], edx
test al, al
jns 0x52b62e
add ecx, 7
inc ebx
add dword [esp + 0xc], 0xffffffff
jb 0x52b5e0
jmp 0x52c2cc
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
mov dword [esp + 0xb8], ebx
or edx, ecx
mov dword [esp + 0xbc], eax
je 0x52b670
mov eax, dword [esp + 0xc4]
mov ebx, dword [esp + 0x1c]
test ecx, ecx
jne 0x52b680
mov ecx, dword [esp + 0x20]
dec ecx
cmp ecx, dword [eax + 8]
jae 0x52b680
imul ecx, ecx, 0x68
add ecx, dword [eax + 4]
jmp 0x52b74e
mov ebx, dword [esp + 0x1c]
dec dword [esp + 0xc8]
jmp 0x52c20c
mov edx, dword [eax + 0xc]
mov cl, 0x12
test edx, edx
je 0x52c3b5
mov eax, dword [eax + 0x10]
mov dword [esp + 0xe0], eax
movzx eax, word [edx + 0x4d6]
mov dword [esp + 0x18], edx
mov dword [esp + 0x110], eax
lea ebx, [eax*8]
mov eax, 0xffffffff
nop word cs:[eax + eax]
nop
test ebx, ebx
je 0x52b713
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov edx, dword [ecx + eax*8 + 0xc]
mov edi, dword [ecx + eax*8 + 8]
xor ecx, ecx
mov dword [esp + 0xc], edx
xor edx, dword [esp + 0x40]
mov dword [esp + 0x14], edi
xor edi, esi
or edi, edx
mov edx, dword [esp + 0x40]
setne cl
cmp esi, dword [esp + 0x14]
sbb edx, dword [esp + 0xc]
mov edx, 0xff
cmovb ecx, edx
inc eax
add ebx, 0xfffffff8
cmp cl, 1
je 0x52b6c0
mov ebx, dword [esp + 0x1c]
movzx ecx, cl
test ecx, ecx
jne 0x52b71a
jmp 0x52b743
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x18]
mov cl, 0x12
mov esi, dword [esp + 0xe0]
sub esi, 1
jb 0x52c3b5
mov edx, dword [edx + eax*4 + 0x4d8]
mov dword [esp + 0xe0], esi
jmp 0x52b697
mov ecx, dword [esp + 0x18]
imul eax, eax, 0x68
lea ecx, [ecx + eax + 0x58]
cmp byte [ecx + 0x62], 1
jne 0x52b75b
inc dword [esp + 0xc8]
cmp word [ecx + 0x60], 0x2e
jne 0x52b7bf
call fcn.00449fa0
mov edi, eax
xor eax, eax
test edx, edx
je 0x52c1b7
shl edx, 4
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0xe0], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x110], 0
mov dword [esp + 0x120], 0
add edx, edi
mov dword [esp + 0x20], edx
jmp 0x52b839
call fcn.00449fa0
mov edi, dword [esp + 0xc0]
mov esi, edx
lea ecx, [esp + 0x130]
lea edx, [esp + 0xb8]
push esi
push eax
push dword [edi + 0x20]
call fcn.00533020
add esp, 0xc
movzx eax, byte [esp + 0x130]
cmp al, 0x4b
je 0x52c20c
jmp 0x52def2
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov dword [esp + 0xd0], eax
mov dword [esp + 0xcc], ecx
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
cmp edi, edx
je 0x52bf0f
lea eax, [edi + 0x10]
movsd xmm0, qword [edi]
movq xmm1, qword [edi + 8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xc0]
movq qword [esp + 0x70], xmm1
movsd qword [esp + 0x68], xmm0
lea ecx, [esp + 0x130]
lea esi, [esp + 0x68]
lea edx, [esp + 0xb8]
push esi
push dword [eax + 0x20]
call fcn.00533840
add esp, 8
cmp dword [esp + 0x2c], 0x800
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x134]
jne 0x52ba4f
xor eax, 0x2e
or eax, ecx
je 0x52c392
movzx eax, word [esp + 0x140]
cmp eax, 0x11
je 0x52be00
cmp eax, 0x12
je 0x52bc35
cmp eax, 0x55
jne 0x52b829
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x90]
mov edx, ecx
and dl, 0x3f
cmp dl, 0x16
je 0x52bdb5
cmp ecx, 0x18
jne 0x52bbfb
mov ecx, dword [esp + 0x64]
mov edi, dword [ecx + 0x64]
mov esi, dword [ecx + 0x60]
sub edi, dword [esp + 0x30]
jb 0x52e0dd
mul dword [esp + 0x38]
mov dword [esp + 0xc], 0
jo 0x52e064
add esi, dword [esp + 0x30]
mov ecx, edi
sub ecx, eax
jb 0x52e0dd
add eax, esi
cmp ecx, 8
jb 0x52e068
cmp dword [eax + 4], 0
mov ecx, dword [esp + 0x40]
jne 0x52e0af
mov eax, dword [eax]
add eax, dword [esp + 0x30]
cmp ecx, dword [esp + 0x20]
mov dword [esp + 0xb4], eax
je 0x52bf1a
mov dword [esp + 0xf8], esi
movsd xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x40], ecx
movq qword [esp + 0x70], xmm1
movsd qword [esp + 0x68], xmm0
lea esi, [esp + 0x68]
lea ecx, [esp + 0x130]
lea edx, [esp + 0xb8]
push esi
push dword [eax + 0x20]
call fcn.00533840
add esp, 8
mov eax, dword [esp + 0x130]
xor eax, 0x2e
or eax, dword [esp + 0x134]
je 0x52c392
movzx eax, word [esp + 0x140]
cmp eax, 0x55
jne 0x52bc10
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x90]
mov edx, ecx
and dl, 0x3f
cmp dl, 0x18
jne 0x52bda7
mul dword [esp + 0x38]
jo 0x52e064
mov ecx, edi
sub ecx, eax
jb 0x52e0d6
mov esi, dword [esp + 0xf8]
add eax, esi
cmp ecx, 8
jb 0x52e068
cmp dword [eax + 4], 0
jne 0x52e0af
mov ecx, dword [esp + 0x40]
mov eax, dword [eax]
add ecx, 0x10
add eax, dword [esp + 0x30]
cmp ecx, dword [esp + 0x20]
mov dword [esp + 0xb4], eax
jne 0x52b967
jmp 0x52bf1a
xor eax, 0x2e
or eax, ecx
je 0x52c392
movzx eax, word [esp + 0x140]
cmp eax, 0x11
je 0x52be00
cmp eax, 0x12
je 0x52bc35
cmp eax, 0x55
jne 0x52b829
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x90]
mov edx, ecx
and dl, 0x3f
cmp dl, 0x16
je 0x52bdb5
cmp ecx, 0x18
jne 0x52bbfb
mov ecx, dword [esp + 0x64]
mov esi, dword [ecx + 0x60]
mov ecx, dword [ecx + 0x64]
sub ecx, dword [esp + 0x30]
mov dword [esp + 0xf8], ecx
jb 0x52e0dd
mul dword [esp + 0x38]
mov dword [esp + 0xc], 0
jo 0x52df19
mov ecx, dword [esp + 0xf8]
add esi, dword [esp + 0x30]
sub ecx, eax
jb 0x52e0dd
add eax, esi
cmp ecx, 4
jb 0x52df6f
mov eax, dword [eax]
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x30]
mov dword [esp + 0xb4], eax
cmp ecx, dword [esp + 0x20]
je 0x52bf1a
movsd xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
mov eax, dword [esp + 0xc0]
mov edi, esi
mov dword [esp + 0x40], ecx
movq qword [esp + 0x70], xmm1
movsd qword [esp + 0x68], xmm0
lea esi, [esp + 0x68]
lea ecx, [esp + 0x130]
lea edx, [esp + 0xb8]
push esi
push dword [eax + 0x20]
call fcn.00533840
add esp, 8
mov eax, dword [esp + 0x130]
xor eax, 0x2e
or eax, dword [esp + 0x134]
je 0x52c392
movzx eax, word [esp + 0x140]
cmp eax, 0x55
jne 0x52bc10
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x90]
mov edx, ecx
and dl, 0x3f
cmp dl, 0x18
jne 0x52bda7
mul dword [esp + 0x38]
jo 0x52df19
mov ecx, dword [esp + 0xf8]
sub ecx, eax
jb 0x52e0d2
add eax, edi
cmp ecx, 4
jb 0x52df6f
mov eax, dword [eax]
mov ecx, dword [esp + 0x40]
mov esi, edi
add eax, dword [esp + 0x30]
add ecx, 0x10
mov dword [esp + 0xb4], eax
cmp ecx, dword [esp + 0x20]
jne 0x52bb1b
jmp 0x52bf1a
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xc], 0
jmp 0x52b831
cmp eax, 0x11
je 0x52bdf3
mov edi, dword [esp + 0x40]
cmp eax, 0x12
jne 0x52beeb
add edi, 0x10
mov dword [esp + 0xc], 1
mov dword [esp + 0x40], edi
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov eax, dword [esp + 0x88]
test al, 0x3f
je 0x52bd05
mov edi, dword [esp + 0x40]
cmp eax, 7
je 0x52bcca
cmp eax, 0xc
jne 0x52bd39
mov eax, dword [esp + 0x64]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, dword [esp + 0x5c]
jb 0x52c3e8
mov eax, dword [esp + 0x90]
mul dword [esp + 0x28]
jo 0x52df20
add ecx, dword [esp + 0x5c]
mov edx, esi
sub edx, eax
jb 0x52c3e8
movzx ebx, byte [esp + 0x58]
dec ebx
cmp ebx, 7
ja 0x52e160
mov ebx, dword [ebx*4 + 0x52e68c]
add ecx, eax
add ebx, dword [esp + 0x34]
jmp ebx
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x120], 0
mov dword [esp + 0x110], 1
mov dword [esp + 0x128], eax
mov dword [esp + 0x124], ecx
jmp 0x52b831
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x18], 0
mov dword [esp + 0xe0], 1
mov dword [esp + 0xec], eax
mov dword [esp + 0xe8], ecx
jmp 0x52b829
mov edx, dword [esp + 0x20]
jmp 0x52b831
cmp ecx, 0x16
jne 0x52beff
add dword [esp + 0x40], 0x10
mov ecx, dword [esp + 0x64]
mov edx, 0
mov edi, dword [esp + 0x40]
mov dword [esp + 0xc], 1
cmp byte [ecx + 0x70], 0
mov ecx, 0
cmovne edx, dword [esp + 0x30]
cmp word [esp + 0x60], 5
cmovae edx, ecx
add edx, eax
mov dword [esp + 0xb4], edx
mov edx, dword [esp + 0x20]
jmp 0x52b831
add dword [esp + 0x40], 0x10
mov dword [esp + 0xc], 1
lea ecx, [esp + 0x88]
lea edx, [esp + 0x130]
call fcn.005353c0
mov eax, dword [esp + 0x88]
test al, 0x3f
je 0x52b7fd
cmp eax, 0xc
jne 0x52b829
mov eax, dword [esp + 0x64]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, dword [esp + 0x5c]
jb 0x52c3e8
mov eax, dword [esp + 0x90]
mul dword [esp + 0x28]
jo 0x52df20
add ecx, dword [esp + 0x5c]
mov edx, esi
sub edx, eax
jb 0x52c3e8
movzx ebx, byte [esp + 0x58]
dec ebx
cmp ebx, 7
ja 0x52e160
mov ebx, dword [ebx*4 + 0x52e6ac]
add ecx, eax
add ebx, dword [esp + 0x34]
jmp ebx
mov edx, dword [esp + 0x20]
add edi, 0x10
mov dword [esp + 0xc], 1
jmp 0x52b831
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
add edi, 0x10
jmp 0x52b831
cmp dword [esp + 0xc], 0
je 0x52c0a3
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xb4]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
sub ecx, edx
jb 0x52e1a3
mov esi, dword [esp + 0x64]
add eax, edx
mov edi, dword [esi + 8]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x114]
mov dword [esp + 0x130], edi
mov edi, dword [esp + 0xf4]
mov dword [esp + 0x134], edi
mov edi, dword [esp + 0x40]
mov dword [esp + 0x138], edi
mov edi, edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x13c], esi
mov dword [esp + 0x140], edx
mov edx, dword [esp + 0x58]
mov word [esp + 0x144], dx
mov edx, dword [esp + 0x60]
mov word [esp + 0x146], dx
mov dword [esp + 0x148], eax
movzx eax, byte [esp + 0x11c]
mov dword [esp + 0x14c], ecx
mov byte [esp + 0x150], al
xor eax, eax
mov byte [esp + 0x153], 0
mov word [esp + 0x151], 0
mov ah, al
mov dword [esp + 0x40], eax
lea ecx, [esp + 0x68]
lea edx, [esp + 0x130]
call fcn.00535c40
mov eax, dword [esp + 0x68]
movdqu xmm1, xmmword [esp + 0x70]
mov ecx, eax
and cl, 3
cmp cl, 1
jne 0x52c07d
pshufd xmm2, xmm1, 0xee
pshufd xmm0, xmm1, 0x55
pshufd xmm3, xmm1, 0xff
movd ecx, xmm1
movd esi, xmm2
movd eax, xmm0
movd edx, xmm3
cmp ecx, esi
sbb eax, edx
jae 0x52bfcf
cmp ebx, dword [esp + 0xd4]
movdqa xmmword [esp + 0x40], xmm1
jne 0x52c049
lea ecx, [esp + 0xd4]
mov edx, ebx
call fcn.00532120
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xdc]
jmp 0x52c050
mov edx, dword [esp + 0xf0]
movaps xmm0, xmmword [esp + 0x40]
mov ecx, dword [esp + 0xac]
lea eax, [ebx + ebx*2]
inc ebx
mov dword [esp + 0xf0], edx
movups xmmword [edx + eax*8], xmm0
mov dword [edx + eax*8 + 0x10], ecx
mov dword [esp + 0xdc], ebx
mov ah, 1
jmp 0x52bfcb
cmp eax, 2
mov dword [esp + 0xb4], edi
jne 0x52c09a
movd eax, xmm1
cmp al, 0x4b
je 0x52c1bc
jmp 0x52e1b7
mov eax, dword [esp + 0x40]
jmp 0x52c1b9
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0x14]
or eax, dword [esp + 0x18]
je 0x52c10c
mov eax, dword [esp + 0x10]
or eax, edx
je 0x52c10c
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0xcc]
cmp dword [esp + 0xd0], eax
sbb ecx, dword [esp + 0xe8]
jae 0x52c1b5
cmp ebx, dword [esp + 0xd4]
jne 0x52c228
lea ecx, [esp + 0xd4]
mov edx, ebx
call fcn.00532120
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xdc]
jmp 0x52c22f
mov ecx, dword [esp + 0x120]
xor eax, eax
mov ah, al
or dword [esp + 0x110], ecx
je 0x52c1b9
or dword [esp + 0x10], edx
je 0x52c1b9
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xcc]
mov esi, eax
mov edi, ecx
add esi, dword [esp + 0x128]
adc edi, dword [esp + 0x124]
cmp eax, esi
mov eax, ecx
sbb eax, edi
jae 0x52c1b5
cmp ebx, dword [esp + 0xd4]
jne 0x52c182
lea ecx, [esp + 0xd4]
mov edx, ebx
call fcn.00532120
mov eax, dword [esp + 0xd8]
mov ebx, dword [esp + 0xdc]
mov dword [esp + 0xf0], eax
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0xcc]
lea eax, [ebx + ebx*2]
mov dword [edx + eax*8 + 4], ecx
mov ecx, dword [esp + 0xd0]
mov dword [edx + eax*8], ecx
mov ecx, dword [esp + 0xac]
mov dword [edx + eax*8 + 0xc], edi
mov dword [edx + eax*8 + 8], esi
jmp 0x52c26b
xor eax, eax
mov ah, al
and ah, 1
test ah, 1
je 0x52c20c
mov edx, dword [esp + 0xac]
cmp edx, dword [esp + 0x100]
jne 0x52c1e4
lea ecx, [esp + 0x100]
call fcn.005376f0
mov edx, dword [esp + 0x108]
mov eax, dword [esp + 0x104]
mov esi, dword [esp + 0x3c]
lea ecx, [edx + edx*4]
inc edx
mov dword [esp + 0xac], edx
mov dword [eax + ecx*8], esi
mov dword [eax + ecx*8 + 8], 2
mov dword [esp + 0x108], edx
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x1c], ebx
test eax, eax
mov dword [esp + 0x14], eax
jne 0x52b58b
jmp 0x52c3ba
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0xcc]
lea eax, [ebx + ebx*2]
mov dword [esp + 0xf0], edx
mov dword [edx + eax*8 + 4], ecx
mov ecx, dword [esp + 0xd0]
mov dword [edx + eax*8], ecx
mov ecx, dword [esp + 0xe8]
mov dword [edx + eax*8 + 0xc], ecx
mov ecx, dword [esp + 0xec]
mov dword [edx + eax*8 + 8], ecx
mov ecx, dword [esp + 0xac]
mov dword [edx + eax*8 + 0x10], ecx
mov ah, 1
inc ebx
mov dword [esp + 0xdc], ebx
jmp 0x52c1b9
movzx edx, byte [eax + 3]
mov byte [ecx + 0xb], dl
movzx edx, word [eax + 1]
mov word [ecx + 9], dx
movzx edx, word [eax + 9]
mov word [ecx + 0x11], dx
movzx edx, byte [eax + 0xb]
mov byte [ecx + 0x13], dl
mov edx, dword [eax + 4]
mov byte [ecx + 8], bl
mov dword [ecx + 0xc], edx
mov dh, byte [eax + 8]
mov eax, dword [eax + 0xc]
mov byte [ecx + 0x10], dh
mov dword [ecx + 0x14], eax
jmp 0x52d15b
mov eax, dword [esp + 0xc]
mov dword [esp + 0xb8], ebx
mov cl, 6
mov dword [esp + 0xbc], eax
jmp 0x52c2ea
mov edx, dword [esp + 0x18]
xor eax, eax
mov cl, 0x13
add edx, dword [esp + 0x14]
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], 0
mov ch, byte [esp + 0x10]
mov byte [esp + 0x70], cl
mov byte [esp + 0x71], ch
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
cmp dword [esp + 0xd4], 0
mov dword [esp + 0x68], 1
je 0x52c329
mov ecx, dword [esp + 0xd8]
mov edx, 8
call fcn.004256e0
mov edi, dword [esp + 0x108]
mov esi, dword [esp + 0x104]
test edi, edi
je 0x52c373
lea ebx, [esi + 0x18]
jmp 0x52c346
add ebx, 0x28
dec edi
je 0x52c373
cmp dword [ebx - 0x10], 0
jne 0x52c340
cmp dword [ebx - 8], 0
je 0x52c35f
mov ecx, dword [ebx - 0xc]
mov edx, 8
call fcn.004256e0
cmp dword [ebx], 0
je 0x52c340
mov ecx, dword [ebx - 4]
mov edx, 8
call fcn.004256e0
jmp 0x52c340
cmp dword [esp + 0x100], 0
je 0x52cb15
mov ecx, esi
mov edx, 8
call fcn.004256e0
jmp 0x52cb15
movsd xmm0, qword [esp + 0x138]
movq xmm1, qword [esp + 0x140]
movq qword [esp + 0x78], xmm1
movsd qword [esp + 0x70], xmm0
jmp 0x52c306
jmp 0x52c2ca
mov eax, dword [esp + 0xd8]
cmp ebx, 0x15
mov dword [esp + 0x5c], eax
jae 0x52c401
cmp ebx, 1
jbe 0x52ca26
mov ecx, dword [esp + 0x5c]
mov edx, ebx
push 1
call fcn.00532ee0
add esp, 4
jmp 0x52ca26
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], 0
mov al, 0x13
jmp 0x52df22
lea eax, [ebx*4]
and eax, 0xfffffff8
lea ecx, [eax + eax*2]
movzx eax, byte [0x706188]
mov edx, 8
call fcn.00425680
test eax, eax
mov dword [esp + 0x40], eax
je 0x52e411
movzx eax, byte [0x706188]
mov ecx, pe_nt_image_headers32
mov edx, 4
call fcn.00425680
test eax, eax
je 0x52e42a
mov esi, eax
mov eax, dword [esp + 0x5c]
xor edi, edi
mov dword [esp + 0xac], 0x10
lea ecx, [eax + 0x30]
add eax, 0xffffffe8
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x60], ecx
jmp 0x52c47f
mov edi, 1
mov eax, dword [esp + 0x28]
cmp eax, ebx
jae 0x52ca0c
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0xc], esi
mov esi, ebx
mov edx, eax
sub esi, eax
lea eax, [eax + eax*2]
mov dword [esp + 0x10], edx
cmp esi, 2
mov dword [esp + 0x20], esi
lea ecx, [ecx + eax*8]
mov dword [esp + 0x14], ecx
jae 0x52c4f6
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov esi, ecx
sub esi, edx
jb 0x52e30b
cmp ecx, ebx
ja 0x52e30b
jae 0x52c543
cmp eax, 0xa
jae 0x52c543
lea esi, [edx + 0xa]
cmp esi, ebx
cmovae esi, ebx
mov dword [esp + 0x28], esi
sub esi, edx
jb 0x52e34a
cmp eax, 1
adc eax, 0
mov ecx, dword [esp + 0x14]
mov edx, esi
push eax
call fcn.00532ee0
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x52c547
mov dword [esp + 0x3c], eax
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx]
mov ebx, dword [ecx + 0x1c]
mov esi, dword [ecx + 4]
cmp edx, eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], esi
sbb ebx, esi
jae 0x52c87b
cmp dword [esp + 0x20], 2
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x1c]
jne 0x52c89b
mov edx, dword [esp + 0x10]
mov eax, 2
lea ecx, [edx + 2]
jmp 0x52c92c
mov dword [esp + 0x28], ecx
cmp edi, dword [esp + 0xac]
jne 0x52c5b2
movzx eax, byte [0x706188]
mov ecx, edi
shl ecx, 4
mov edx, 4
call fcn.00425680
test eax, eax
je 0x52e351
mov ecx, eax
lea eax, [edi + edi]
mov dword [esp + 0xac], eax
lea eax, [edi*8]
push eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x10]
push edi
push ecx
mov dword [esp + 0x2c], ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, edi
mov edi, dword [esp + 0x18]
mov edx, 4
call fcn.004256e0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
jmp 0x52c5b6
mov eax, dword [esp + 0xc]
mov dword [eax + edi*8], esi
mov dword [eax + edi*8 + 4], edx
inc edi
mov esi, eax
cmp edi, 2
jb 0x52c473
mov dword [esp + 0xc], esi
jmp 0x52c62b
mov eax, dword [esp + 0x40]
mov ecx, edi
mov ebx, dword [esp + 0x18]
sub esi, eax
lea edi, [ebx - 1]
push esi
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x3c]
add eax, dword [esp + 0x14]
mov dword [esi + ecx*8 + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esi + ecx*8 + 0xc], eax
not ecx
lea eax, [edx + 8]
add ecx, ebx
shl ecx, 3
push ecx
push eax
push edx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ebx, dword [esp + 0x1c]
cmp edi, 1
jbe 0x52c46e
mov eax, dword [esi + edi*8 - 8]
mov ecx, dword [esi + edi*8 - 4]
add ecx, eax
cmp ecx, ebx
je 0x52c680
mov edx, dword [esi + edi*8 - 0x10]
cmp edx, eax
jbe 0x52c680
cmp edi, 2
jbe 0x52c9e9
lea ecx, [edi - 3]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + edi*8 - 0x18]
lea esi, [edx + eax]
cmp ecx, esi
jbe 0x52c692
cmp edi, 3
jbe 0x52c9f3
mov esi, dword [esp + 0xc]
add edx, ecx
cmp dword [esi + edi*8 - 0x20], edx
jbe 0x52c696
jmp 0x52c9fc
cmp edi, 3
jb 0x52c69e
lea ecx, [edi - 3]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + edi*8 - 0x18]
jmp 0x52c696
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
cmp ecx, eax
jb 0x52c6a1
lea ebx, [edi - 2]
cmp edi, ebx
jbe 0x52e28a
lea eax, [ebx + 1]
mov dword [esp + 0x18], edi
cmp edi, eax
mov edi, dword [esp + 0x1c]
jbe 0x52e278
mov eax, dword [esi + ebx*8 + 8]
mov edx, dword [esi + ebx*8 + 0xc]
mov ecx, dword [esi + ebx*8 + 4]
add edx, eax
mov esi, edx
sub esi, ecx
mov dword [esp + 0x20], esi
jb 0x52e2c7
cmp edx, edi
mov dword [esp + 0x34], eax
ja 0x52e2d9
mov eax, dword [esp + 0xc]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], ebx
mov esi, dword [eax + ebx*8]
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x5c]
lea ecx, [ecx + eax*8]
lea eax, [esi + esi*2]
mov dword [esp + 0x14], esi
lea edi, [ecx + eax*8]
lea eax, [edx + edx*2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc]
sub edx, esi
cmp edx, esi
lea eax, [eax + ebx*8]
mov dword [esp + 0x3c], eax
jae 0x52c7d6
lea eax, [edx*8]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x38], edx
lea esi, [eax + eax*2]
push esi
push edi
mov ebx, dword [esp + 0x48]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add esi, ebx
cmp dword [esp + 0x14], 0
jle 0x52c5cf
cmp dword [esp + 0x38], 0
jle 0x52c5cf
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x30]
lea eax, [eax + ecx*8]
nop dword [eax + eax]
mov ecx, dword [esi - 0x18]
mov edx, dword [esi - 0x14]
mov ebx, 0
cmp ecx, dword [edi - 0x18]
sbb edx, dword [edi - 0x14]
setb dl
setb cl
adc ebx, 0xffffffff
movzx edx, dl
neg edx
test cl, cl
lea edx, [edx + edx*2]
lea edi, [edi + edx*8]
lea edx, [ebx + ebx*2]
lea esi, [esi + edx*8]
mov ecx, esi
cmovne ecx, edi
cmp edi, dword [esp + 0x20]
movsd xmm1, qword [ecx + 8]
movq xmm0, qword [ecx]
movsd qword [eax + 8], xmm1
movq xmm1, qword [ecx + 0x10]
movq qword [eax], xmm0
movq qword [eax + 0x10], xmm1
jbe 0x52c5cf
add eax, 0xffffffe8
cmp esi, dword [esp + 0x40]
ja 0x52c770
jmp 0x52c5cf
lea eax, [esi*8]
lea esi, [eax + eax*2]
push esi
mov ebx, ecx
push ecx
push dword [esp + 0x48]
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x20]
add esp, 0xc
add esi, dword [esp + 0x40]
test eax, eax
jle 0x52c870
cmp dword [esp + 0x20], eax
jle 0x52c870
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x30]
lea ecx, [eax + ecx*8]
mov eax, dword [esp + 0x40]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, dword [edi]
cmp edx, dword [eax]
mov edx, dword [edi + 4]
sbb edx, dword [eax + 4]
mov edx, eax
cmovb edx, edi
movsd xmm1, qword [edx + 8]
movq xmm0, qword [edx]
movsd qword [ebx + 8], xmm1
movq xmm1, qword [edx + 0x10]
setae dl
movq qword [ebx], xmm0
movzx edx, dl
lea edx, [edx + edx*2]
lea eax, [eax + edx*8]
setb dl
movq qword [ebx + 0x10], xmm1
add ebx, 0x18
cmp eax, esi
jae 0x52c874
movzx edx, dl
lea edx, [edx + edx*2]
lea edi, [edi + edx*8]
cmp edi, ecx
jb 0x52c820
jmp 0x52c874
mov eax, dword [esp + 0x40]
mov ecx, ebx
jmp 0x52c5d5
cmp dword [esp + 0x20], 2
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x1c]
jne 0x52c8d0
mov edx, dword [esp + 0x10]
mov eax, 2
lea ecx, [edx + 2]
jmp 0x52c4aa
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x18], edi
lea ebx, [ecx + eax*8]
mov eax, 2
mov ecx, edx
mov edi, esi
mov esi, dword [ebx]
mov edx, dword [ebx + 4]
cmp esi, edi
mov edi, edx
sbb edi, ecx
jae 0x52c907
inc eax
add ebx, 0x18
cmp dword [esp + 0x20], eax
jne 0x52c8b3
jmp 0x52c903
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x18], edi
lea ebx, [ecx + eax*8]
mov eax, 2
mov edi, edx
mov ecx, esi
mov esi, dword [ebx]
mov edx, dword [ebx + 4]
cmp esi, ecx
mov ecx, edx
sbb ecx, edi
jb 0x52c907
inc eax
add ebx, 0x18
cmp dword [esp + 0x20], eax
jne 0x52c8e8
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
cmp dword [esp + 0x2c], esi
lea ecx, [eax + edx]
sbb dword [esp + 0x34], edi
mov edi, dword [esp + 0x18]
jae 0x52c4aa
cmp edx, ecx
ja 0x52e3c3
cmp ecx, ebx
ja 0x52e3b2
cmp eax, 2
jb 0x52c4aa
mov dword [esp + 0x28], ecx
mov ecx, eax
mov esi, dword [esp + 0x14]
shr eax, 1
mov dword [esp + 0x20], ecx
add ecx, edx
mov edx, dword [esp + 0x58]
lea ecx, [ecx + ecx*2]
lea edx, [edx + ecx*8]
movsd xmm0, qword [esi + 0x10]
movsd qword [esp + 0x140], xmm0
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x138], xmm1
movsd qword [esp + 0x130], xmm0
movsd xmm0, qword [edx + 0x10]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [edx]
movsd xmm1, qword [edx + 8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
add esi, 0x18
movsd xmm0, qword [esp + 0x140]
movsd qword [edx + 0x10], xmm0
movq xmm0, qword [esp + 0x130]
movq xmm1, qword [esp + 0x138]
movq qword [edx + 8], xmm1
movq qword [edx], xmm0
add edx, 0xffffffe8
dec eax
jne 0x52c961
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
jmp 0x52c4aa
mov edi, 2
jmp 0x52c473
mov esi, dword [esp + 0xc]
mov edi, 3
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jb 0x52c47f
mov ecx, esi
mov edx, 4
call fcn.004256e0
mov ecx, dword [esp + 0x40]
mov edx, 8
call fcn.004256e0
mov ebx, dword [esp + 0x108]
mov edi, dword [esp + 0x104]
cmp dword [esp + 0x100], ebx
jbe 0x52ca73
test ebx, ebx
je 0x52ca79
lea eax, [ebx*8]
lea esi, [eax + eax*4]
push esi
push edi
push 0
push dword [0x706118]
call sub.KERNEL32.DLL_HeapReAlloc
test eax, eax
mov dword [esp + 0x10], eax
jne 0x52ca8d
mov ecx, 8
mov edx, esi
call fcn.00434230
jmp 0x52e441
mov dword [esp + 0x10], edi
jmp 0x52ca8d
mov ecx, edi
mov edx, 8
mov dword [esp + 0x10], 8
call fcn.004256e0
mov edi, dword [esp + 0xdc]
mov ecx, dword [esp + 0xd8]
cmp dword [esp + 0xd4], edi
jbe 0x52cae6
test edi, edi
je 0x52caea
lea eax, [edi*8]
lea eax, [eax + eax*2]
mov dword [esp + 0x40], eax
push eax
push ecx
push 0
push dword [0x706118]
mov dword [esp + 0x30], ecx
call sub.KERNEL32.DLL_HeapReAlloc
mov esi, eax
test eax, eax
jne 0x52caf9
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ecx, 8
call fcn.00434230
jmp 0x52e441
mov esi, ecx
jmp 0x52caf9
mov edx, 8
mov esi, 8
call fcn.004256e0
mov eax, dword [esp + 0x10]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], edi
mov dword [esp + 0x68], 0
mov ebx, dword [esp + 0x84]
lea esi, [ebx + 0x120]
cmp dword [esi], 2
jne 0x52cb49
movsd xmm0, qword [esp + 0x68]
movq xmm1, qword [esp + 0x70]
movsd qword [esi], xmm0
movsd xmm0, qword [esp + 0x78]
movq qword [esi + 8], xmm1
movsd qword [esi + 0x10], xmm0
jmp 0x52cb52
lea ecx, [esp + 0x68]
call fcn.00537790
mov eax, dword [esi]
mov edx, dword [esp + 0xb0]
test eax, eax
je 0x52cbb2
movzx eax, byte [ebx + 0x128]
mov esi, dword [ebx + 0x12c]
cmp al, 0x4b
je 0x52cbba
mov ah, byte [ebx + 0x12b]
mov edi, dword [esp + 0x118]
mov ecx, dword [ebx + 0x134]
mov edx, dword [ebx + 0x130]
mov byte [edi + 0xb], ah
mov dword [esp + 0x40], ecx
mov ecx, esi
movzx esi, word [ebx + 0x129]
mov word [edi + 9], si
mov byte [edi + 8], al
mov dword [edi + 0xc], ecx
mov ecx, dword [esp + 0x40]
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], ecx
jmp 0x52d159
add ebx, 0x124
mov esi, ebx
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov edx, dword [esi + 0xc]
test edx, edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], ecx
je 0x52cc6f
mov eax, dword [esi + 8]
mov dword [esp + 0x34], esi
xor esi, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
jmp 0x52cc16
mov ecx, esi
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x40], eax
mov eax, dword [esp + 0x20]
sbb eax, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
cmovb eax, edx
cmovae esi, ecx
mov edx, eax
mov dword [esp + 0x14], eax
sub edx, esi
jbe 0x52cc6f
mov ebx, dword [esp + 0x18]
shr edx, 1
add edx, esi
lea ecx, [edx + edx*2]
mov eax, dword [ebx + ecx*8]
mov edi, dword [ebx + ecx*8 + 4]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x40], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], edi
mov edi, dword [ebx + ecx*8 + 0xc]
sbb eax, dword [esp + 0xc]
mov eax, dword [ebx + ecx*8 + 8]
mov dword [esp + 0x10], edi
jb 0x52cc5c
cmp dword [esp + 0x40], eax
mov ebx, dword [esp + 0x20]
sbb ebx, dword [esp + 0x10]
jb 0x52cd25
cmp dword [esp + 0x40], eax
mov ecx, dword [esp + 0x20]
sbb ecx, dword [esp + 0x10]
jb 0x52cbf0
lea ecx, [edx + 1]
jmp 0x52cbf2
xor edx, edx
mov ecx, dword [esp + 0xb0]
mov ebx, dword [ecx + 8]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], 2
mov esi, dword [ebx + 0x10]
add eax, 1
adc ecx, 0
mov dword [esp + 0xb0], eax
xor esi, 0x2f
or esi, dword [ebx + 0x14]
jne 0x52ccac
mov dword [esp + 0x2c], edx
jmp 0x52d2e3
mov eax, dword [ebx + 0x108]
mov dword [esp + 0xe4], ecx
cmp eax, 2
jne 0x52cebe
mov esi, edx
lea edi, [ebx + 0x108]
lea edx, [ebx + 0x10]
lea ecx, [esp + 0x130]
call fcn.0052edd0
lea ecx, [esp + 0x68]
mov edx, ebx
push dword [esp + 0x64]
lea eax, [esp + 0x134]
push eax
call fcn.0052f130
add esp, 8
cmp dword [ebx + 0x108], 2
jne 0x52ceb1
movsd xmm0, qword [esp + 0x68]
movq xmm1, qword [esp + 0x70]
movsd qword [edi], xmm0
movsd xmm0, qword [esp + 0x78]
movq qword [edi + 8], xmm1
movsd qword [edi + 0x10], xmm0
jmp 0x52ceba
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ecx*8 + 0x10]
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 4]
cmp ecx, edx
jae 0x52e1ad
mov edx, dword [eax]
lea ecx, [ecx + ecx*4]
mov ebx, dword [esp + 0x24]
mov eax, dword [edx + ecx*8 + 8]
lea esi, [edx + ecx*8 + 8]
cmp eax, 2
jne 0x52d116
movzx eax, byte [ebx + 0xc9]
mov dword [esp + 0x28], esi
mov esi, dword [edx + ecx*8]
mov edx, dword [ebx + 0xcc]
mov edi, dword [ebx + 0xc4]
xor ecx, ecx
cmp al, 8
mov byte [esp + 0x34], al
mov dword [esp + 0xc], edx
mov dword [esp + 0x38], esi
sete cl
lea eax, [edx + ecx*8 + 4]
mov edx, ebx
mov ebx, esi
mov dword [esp + 0x10], eax
sub eax, edi
sub esi, eax
lea eax, [edx + 0xa8]
mov edx, dword [edx + 0xf0]
mov dword [esp + 0x1c], eax
lea eax, [edx + 8]
mov dword [esp + 0x18], eax
jb 0x52cfd4
mov eax, edi
sub eax, esi
jbe 0x52cfd4
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0xc0]
add esi, edx
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], 0
xor esi, esi
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xb0]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x2c], eax
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x74], ecx
lea ecx, [edx + edi]
sub edi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x78], 0
sub edi, dword [esp + 0xc]
mov dword [esp + 0x18], ecx
mov ecx, eax
not ecx
add edi, edx
xor edx, edx
mov dword [esp + 0x3c], ecx
xor ecx, ecx
nop dword [eax + eax]
movzx eax, byte [edi + eax]
cmp ecx, 0x3f
mov dword [esp + 0xc], eax
jne 0x52ce45
cmp al, 2
jae 0x52d0bf
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], edi
mov edi, esi
mov esi, edx
mov edx, 0
mov ebx, eax
xor eax, eax
and bl, 0x7f
movzx ebx, bl
shld eax, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne eax, ebx
cmovne ebx, edx
mov edx, esi
mov esi, edi
or esi, eax
or edx, ebx
cmp byte [esp + 0xc], 0
jns 0x52d16f
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add ecx, 7
dec ebx
inc edi
cmp eax, ebx
mov dword [esp + 0x10], ebx
jne 0x52ce30
mov dword [esp + 0x38], 0
mov bl, 0x13
mov dword [esp + 0x1c], 0
jmp 0x52d0c9
lea ecx, [esp + 0x68]
call fcn.00531a60
mov eax, dword [edi]
mov edx, esi
lea ecx, [ebx + 0x110]
add ebx, 0x10c
test eax, eax
cmovne ebx, ecx
je 0x52cee2
movzx ecx, byte [ebx]
mov eax, dword [ebx + 4]
cmp ecx, 0x4b
jne 0x52cfa4
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x2c], edx
je 0x52d2e3
mov ecx, dword [ebx + 0xc]
mov esi, dword [ebx + 8]
xor eax, eax
mov edi, 0
mov dword [esp + 0x3c], ebx
test ecx, ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x84], ecx
je 0x52d019
mov ebx, dword [esp + 0x20]
xor eax, eax
mov edx, ecx
mov edi, ecx
jmp 0x52cf50
mov esi, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x40], edx
mov edx, ebx
sbb edx, dword [esp + 0x1c]
cmovae eax, dword [esp + 0x18]
cmovb edi, esi
mov edx, edi
sub edx, eax
jbe 0x52cffe
shr edx, 1
mov dword [esp + 0x10], edi
add edx, eax
mov dword [esp + 0xc], edx
lea esi, [edx + edx*2]
mov edx, dword [esp + 0x24]
mov edi, dword [edx + esi*8 + 8]
mov ecx, dword [edx + esi*8 + 0xc]
cmp dword [esp + 0x40], edi
mov dword [esp + 0x14], edi
mov edi, ebx
mov dword [esp + 0x1c], ecx
sbb edi, ecx
mov edi, dword [edx + esi*8 + 0x14]
mov esi, dword [edx + esi*8 + 0x10]
jb 0x52cf8f
cmp dword [esp + 0x40], esi
mov edx, ebx
sbb edx, edi
jb 0x52cfed
cmp dword [esp + 0x40], esi
sbb ebx, edi
jb 0x52cf20
mov esi, dword [esp + 0xc]
lea ecx, [esi + 1]
mov dword [esp + 0x18], ecx
jmp 0x52cf28
movzx edx, byte [ebx + 3]
movzx esi, word [ebx + 1]
mov edi, dword [esp + 0x118]
shl esi, 8
shl edx, 0x18
or edx, esi
mov esi, dword [ebx + 0xc]
or edx, ecx
mov ecx, dword [ebx + 8]
mov dword [edi + 8], edx
mov dword [edi + 0xc], eax
mov dword [edi + 0x14], esi
mov dword [edi + 0x10], ecx
jmp 0x52d159
xor edi, edi
mov bl, 0x38
mov dword [esp + 0xc], 0
mov dword [esp + 0x38], 0
jmp 0x52d0c9
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0xc]
jmp 0x52d013
test eax, eax
jne 0x52d2e3
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x84]
xor edi, edi
mov esi, dword [esp + 0x24]
xor eax, eax
cmp edi, ecx
lea ecx, [edi + edi*2]
mov dword [esp + 0x64], ecx
jae 0x52d1e2
mov eax, dword [esi + ecx*8 + 4]
test eax, eax
je 0x52d1e0
mov ecx, dword [esp + 0x64]
mov edx, eax
mov dword [esp + 0xc], edi
mov ecx, dword [esi + ecx*8]
mov dword [esp + 0x18], ecx
xor ecx, ecx
jmp 0x52d062
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
mov eax, edx
sub eax, ecx
jbe 0x52d1d9
shr eax, 1
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], edx
add eax, ecx
mov ecx, dword [esp + 0x18]
lea edx, [eax + eax*2]
mov dword [esp + 0x10], eax
mov ebx, dword [ecx + edx*8]
mov esi, dword [ecx + edx*8 + 4]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov eax, esi
mov edi, ebx
xor eax, edx
xor edi, ecx
or edi, eax
je 0x52d1c7
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
cmp ecx, ebx
sbb edx, esi
mov edx, eax
jb 0x52d0ac
mov edx, dword [esp + 0x1c]
cmp ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
sbb esi, dword [esp + 0x20]
jae 0x52d050
inc eax
mov ecx, eax
jmp 0x52d050
mov bl, 6
mov dword [esp + 0x38], 0
mov esi, dword [esp + 0x28]
mov eax, dword [esi]
cmp eax, 2
jne 0x52d116
mov ecx, ebx
mov eax, 1
mov dword [esi], eax
mov eax, dword [esp + 0x10]
shl edi, 0x10
movzx ecx, cl
mov dword [esi + 4], eax
movzx eax, byte [esp + 0xc]
shl eax, 8
or eax, edi
mov edi, dword [esp + 0x18]
or ecx, eax
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x38]
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], ebx
mov eax, dword [esi]
test eax, eax
je 0x52d165
movzx eax, byte [esi + 8]
mov edx, dword [esi + 0xc]
mov ecx, dword [esp + 0xb0]
cmp al, 0x4b
je 0x52cc78
mov ah, byte [esi + 0xb]
mov edi, dword [esp + 0x118]
mov ebx, edx
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
mov byte [edi + 0xb], ah
movzx esi, word [esi + 9]
mov word [edi + 9], si
mov byte [edi + 8], al
mov dword [edi + 0xc], ebx
mov dword [edi + 0x14], ecx
mov dword [edi + 0x10], edx
mov ecx, edi
mov eax, 1
jmp 0x52d30f
add esi, 4
mov edx, esi
jmp 0x52cc71
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
add edi, dword [esp + 0x10]
lea eax, [ecx + eax + 1]
mov dword [esp + 0x68], eax
mov eax, edx
or eax, esi
mov dword [esp + 0x6c], edi
je 0x52e39e
mov dword [esp + 0x10], esi
test esi, esi
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x84]
jne 0x52d319
lea ecx, [edx - 1]
cmp ecx, dword [eax + 0x10]
jae 0x52d319
imul ecx, ecx, 0x68
add ecx, dword [eax + 0xc]
jmp 0x52d3d1
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
jmp 0x52d1e2
sub ecx, 1
mov eax, ecx
jae 0x52d1e2
xor eax, eax
cmp edi, dword [esp + 0x84]
jae 0x52d2e3
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [esi + eax*8 + 0xc]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0x40]
cmp dword [esi + eax*8 + 8], ecx
mov ecx, eax
sbb edx, dword [esp + 0xe4]
jae 0x52d2e3
mov eax, dword [esp + 0x10]
cmp eax, dword [esi + ecx*8 + 4]
jae 0x52d273
mov eax, ecx
lea eax, [esi + ecx*8]
mov esi, dword [eax]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xb0]
lea edi, [eax + eax*2]
mov eax, dword [esi + edi*8 + 4]
cmp dword [esi + edi*8], ecx
sbb eax, dword [esp + 0xe4]
jae 0x52d2e3
mov eax, dword [esi + edi*8 + 8]
cmp dword [ebx + 4], eax
jbe 0x52d765
mov ecx, dword [ebx]
lea edx, [eax + eax*2]
mov eax, dword [ecx + edx*4 + 4]
mov ecx, dword [ecx + edx*4 + 8]
mov dword [esp + 0x40], eax
jmp 0x52d76d
lea eax, [edi + 1]
mov ecx, edi
mov edi, dword [esp + 0x84]
cmp eax, edi
je 0x52d2e3
xor edx, edx
cmp eax, edi
lea eax, [eax + eax*2]
lea eax, [esi + eax*8]
cmovae eax, edx
mov edx, dword [esp + 0x64]
neg edi
add ecx, 2
mov dword [esp + 0x40], edi
mov edi, ecx
lea edx, [esi + edx*8 + 0x30]
mov ecx, dword [esp + 0xb0]
mov esi, dword [eax + 0xc]
cmp dword [eax + 8], ecx
sbb esi, dword [esp + 0xe4]
jae 0x52d2e3
cmp dword [eax + 4], 0
jne 0x52dee5
mov ecx, dword [esp + 0x40]
cmp edi, dword [esp + 0x84]
mov eax, 0
lea esi, [ecx + edi + 1]
cmovb eax, edx
inc edi
add edx, 0x18
cmp esi, 1
jne 0x52d2a3
mov edi, dword [esp + 0x118]
mov eax, dword [esp + 0x2c]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x34]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x40]
mov dword [edi + 0xc], edx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], esi
mov dword [edi + 0x1c], ecx
mov ecx, edi
mov dword [edi + 0x18], eax
xor eax, eax
mov dword [ecx], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [eax + 0x14]
mov bl, 0x12
test ecx, ecx
je 0x52d78c
mov eax, dword [eax + 0x18]
mov dword [esp + 0x3c], eax
movzx eax, word [ecx + 0x4d6]
mov esi, 0xffffffff
mov dword [esp + 0x18], ecx
lea edi, [eax*8]
mov dword [esp + 0x84], eax
test edi, edi
je 0x52d398
mov eax, dword [esp + 0x18]
mov ebx, dword [eax + esi*8 + 0xc]
mov ecx, dword [eax + esi*8 + 8]
mov dword [esp + 0x14], ebx
xor ebx, dword [esp + 0x10]
mov eax, ecx
mov dword [esp + 0x1c], ecx
xor ecx, ecx
xor eax, edx
or eax, ebx
mov eax, dword [esp + 0x10]
setne cl
cmp edx, dword [esp + 0x1c]
sbb eax, dword [esp + 0x14]
mov eax, 0xff
cmovb ecx, eax
inc esi
add edi, 0xfffffff8
cmp cl, 1
je 0x52d34b
movzx eax, cl
test eax, eax
jne 0x52d39f
jmp 0x52d3c2
mov esi, dword [esp + 0x84]
mov ecx, dword [esp + 0x18]
mov bl, 0x12
mov eax, dword [esp + 0x3c]
sub eax, 1
jb 0x52e14b
mov ecx, dword [ecx + esi*4 + 0x4d8]
mov dword [esp + 0x3c], eax
jmp 0x52d32d
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x24]
imul eax, esi, 0x68
lea ecx, [ecx + eax + 0x58]
cmp byte [ecx + 0x62], 1
jne 0x52d3df
mov dword [esp + 0x78], 1
call fcn.00449fa0
movzx ecx, byte [esp + 0xe4]
mov esi, eax
test edx, edx
mov dword [esp + 0x10], ecx
je 0x52d5ed
mov eax, dword [ebx + 0xf4]
shl edx, 4
mov dword [esp + 0x58], 0
mov edi, edx
mov dword [esp + 0xc], eax
jmp 0x52d427
mov eax, dword [esp + 0x58]
add esi, 0x10
add edi, 0xfffffff0
mov dword [esp + 0x58], eax
je 0x52d5f5
movsd xmm0, qword [esi]
movq xmm1, qword [esi + 8]
mov eax, dword [esp + 0x70]
movq qword [esp + 0xc0], xmm1
movsd qword [esp + 0xb8], xmm0
lea ebx, [esp + 0xb8]
lea ecx, [esp + 0x130]
lea edx, [esp + 0x68]
push ebx
push dword [eax + 0x20]
call fcn.00533840
add esp, 8
mov eax, dword [esp + 0x130]
xor eax, 0x2e
or eax, dword [esp + 0x134]
je 0x52d72d
movzx eax, word [esp + 0x140]
cmp eax, 0x46
jle 0x52d4fc
cmp eax, 0x47
je 0x52d50a
cmp eax, 0x6e
je 0x52d49d
cmp eax, 0x2007
jne 0x52d413
lea ebx, [esp + 0xb8]
lea edx, [esp + 0x130]
mov ecx, ebx
call fcn.005353c0
movzx eax, byte [esp + 0x34]
mov edx, dword [esp + 0x64]
lea ecx, [esp + 0x88]
push ebx
push dword [esp + 0x10]
push eax
call fcn.00532970
add esp, 0xc
cmp byte [esp + 0x88], 0x4b
mov eax, dword [esp + 0x58]
jne 0x52d417
mov eax, dword [esp + 0x90]
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0x8c]
jmp 0x52d417
cmp eax, 3
je 0x52d580
cmp eax, 0x31
jne 0x52d413
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x52d417
lea ecx, [esp + 0xb8]
lea edx, [esp + 0x130]
call fcn.005353c0
mov edx, dword [esp + 0xb8]
lea ecx, [esp + 0x88]
push 0x10
push dword [esp + 0x68]
push dword [esp + 0x34]
push dword [esp + 0x30]
push dword [esp + 0x20]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
call fcn.00538b90
add esp, 0x1c
movzx ebx, byte [esp + 0x88]
cmp bl, 0x4b
jne 0x52e111
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x90]
jmp 0x52d5e1
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x52d417
lea ebx, [esp + 0xb8]
lea edx, [esp + 0x130]
mov ecx, ebx
call fcn.005353c0
movzx eax, byte [esp + 0x34]
mov edx, dword [esp + 0x64]
lea ecx, [esp + 0x88]
push ebx
push dword [esp + 0x10]
push eax
call fcn.00532970
add esp, 0xc
xor eax, eax
cmp byte [esp + 0x88], 0x4b
jne 0x52d5dd
mov eax, dword [esp + 0x90]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xfc], ecx
jmp 0x52d417
mov dword [esp + 0x58], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 8
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 8
mov dword [esp + 0x90], 0
mov dword [esp + 0xc0], 0
lea edi, [esp + 0x130]
lea eax, [esp + 0xb8]
lea edx, [esp + 0x68]
lea esi, [esp + 0x88]
mov ecx, edi
push 0
push eax
push esi
push dword [esp + 0x70]
push dword [esp + 0x3c]
push dword [esp + 0x38]
push dword [esp + 0x28]
push 0
call fcn.00537810
add esp, 0x20
movzx eax, byte [esp + 0x130]
mov esi, dword [esp + 0x28]
cmp al, 0x4b
jne 0x52d6b7
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xbc]
cmp edx, 0x15
mov dword [esp + 0x5c], eax
jae 0x52d7a1
cmp edx, 1
jbe 0x52de87
mov ecx, dword [esp + 0x5c]
push 1
call fcn.00538a40
add esp, 4
jmp 0x52de87
mov ecx, dword [esp + 0x134]
mov ebx, eax
movzx eax, byte [esp + 0x131]
mov edx, dword [esp + 0x138]
movzx edi, word [esp + 0x132]
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x13c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ecx
je 0x52d709
mov ecx, dword [esp + 0xbc]
mov edx, 8
call fcn.004256e0
cmp dword [esp + 0x88], 0
je 0x52d0cd
mov ecx, dword [esp + 0x8c]
mov edx, 8
call fcn.004256e0
jmp 0x52d0cd
mov eax, dword [esp + 0x13c]
mov ebx, dword [esp + 0x138]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x140]
mov edi, ebx
shr edi, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x144]
mov dword [esp + 0x38], eax
mov al, bh
mov dword [esp + 0xc], eax
jmp 0x52d0c9
mov dword [esp + 0x40], 0
mov edx, dword [esi + edi*8 + 0x10]
mov esi, dword [esi + edi*8 + 0x14]
xor eax, eax
test edx, edx
setne al
xor ebx, ebx
test esi, esi
setne bl
mov dword [esp + 0x34], eax
jmp 0x52d2e3
mov dword [esp + 0x38], 0
mov dword [esp + 0x1c], 0
jmp 0x52d0cd
lea eax, [edx*4]
mov dword [esp + 0x11c], edi
mov dword [esp + 0x2c], edx
and eax, 0xfffffff8
lea ecx, [eax + eax*2]
movzx eax, byte [0x706188]
mov edx, 8
call fcn.00425680
test eax, eax
je 0x52e3df
mov esi, eax
movzx eax, byte [0x706188]
mov ecx, pe_nt_image_headers32
mov edx, 4
call fcn.00425680
test eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], esi
je 0x52e3f8
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x2c]
xor edi, edi
mov dword [esp + 0xf4], 0x10
lea ecx, [eax + 0x40]
add eax, 0xffffffe8
mov dword [esp + 0xac], eax
xor eax, eax
mov dword [esp + 0x114], ecx
jmp 0x52d837
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x2c]
cmp eax, ebx
jae 0x52de6b
mov ecx, dword [esp + 0x5c]
mov edx, ebx
lea esi, [eax + eax*2]
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], edi
sub edx, eax
cmp edx, 2
lea ecx, [ecx + esi*8]
mov dword [esp + 0x10], ecx
jae 0x52d864
mov eax, edx
mov edx, dword [esp + 0xc]
lea ecx, [eax + edx]
jmp 0x52da03
mov dword [esp + 0x34], esi
mov eax, dword [ecx + 0x10]
mov esi, dword [ecx + 0x28]
cmp esi, eax
jb 0x52d889
mov eax, dword [ecx + 0x1c]
mov ebx, dword [ecx + 0x18]
mov dword [esp + 0x14], eax
ja 0x52d8d2
cmp ebx, dword [ecx]
mov eax, dword [esp + 0x14]
sbb eax, dword [ecx + 4]
jae 0x52d8d2
mov eax, 2
cmp edx, 3
jb 0x52d942
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x34]
lea ecx, [eax + ecx*8]
mov eax, 2
jmp 0x52d8b8
inc eax
add ecx, 0x18
cmp edx, eax
je 0x52d93c
mov edi, esi
mov esi, dword [ecx]
cmp esi, edi
jb 0x52d8ac
ja 0x52d93e
mov edi, dword [ecx - 0x28]
mov ebx, dword [ecx - 0xc]
cmp dword [ecx - 0x10], edi
sbb ebx, dword [ecx - 0x24]
jb 0x52d8ac
jmp 0x52d93e
mov eax, 2
cmp edx, 3
mov dword [esp + 0x24], ebx
jb 0x52d858
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x34]
lea edi, [eax + ecx*8]
mov eax, 2
jmp 0x52d90d
inc eax
add edi, 0x18
mov dword [esp + 0x24], ebx
mov dword [esp + 0x14], ecx
cmp edx, eax
je 0x52de62
mov ecx, esi
mov esi, dword [edi]
cmp esi, ecx
jb 0x52d933
mov ebx, dword [edi - 0x10]
mov ecx, dword [edi - 0xc]
ja 0x52d8f9
cmp ebx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x24]
sbb ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
jae 0x52d8f9
mov edi, dword [esp + 0x18]
jmp 0x52d858
mov eax, edx
mov edi, dword [esp + 0x18]
mov ecx, eax
add ecx, dword [esp + 0xc]
jb 0x52e37f
mov edx, dword [esp + 0x2c]
cmp ecx, edx
ja 0x52e36d
cmp eax, 2
jb 0x52d9ff
mov esi, dword [esp + 0xac]
mov dword [esp + 0x60], ecx
lea ecx, [ecx + ecx*2]
mov edx, eax
shr edx, 1
lea ecx, [esi + ecx*8]
mov esi, dword [esp + 0x10]
nop dword [eax]
movsd xmm0, qword [esi + 0x10]
movsd qword [esp + 0x140], xmm0
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x138], xmm1
movsd qword [esp + 0x130], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [ecx]
movsd xmm1, qword [ecx + 8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
add esi, 0x18
movsd xmm0, qword [esp + 0x140]
movsd qword [ecx + 0x10], xmm0
movsd xmm0, qword [esp + 0x130]
movq xmm1, qword [esp + 0x138]
movq qword [ecx + 8], xmm1
movsd qword [ecx], xmm0
add ecx, 0xffffffe8
dec edx
jne 0x52d980
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0xc]
mov esi, ecx
sub esi, edx
jb 0x52e2ef
cmp ecx, dword [esp + 0x2c]
ja 0x52e2ef
jae 0x52da55
cmp eax, 0xa
jae 0x52da55
mov ecx, dword [esp + 0x2c]
lea esi, [edx + 0xa]
cmp esi, ecx
cmovae esi, ecx
mov dword [esp + 0x60], esi
sub esi, edx
jb 0x52e327
cmp eax, 1
adc eax, 0
mov ecx, dword [esp + 0x10]
mov edx, esi
push eax
call fcn.00538a40
add esp, 4
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
jmp 0x52da59
mov dword [esp + 0x60], ecx
cmp edi, dword [esp + 0xf4]
jne 0x52dac0
movzx eax, byte [0x706188]
mov ecx, edi
mov ebx, edi
shl ecx, 4
mov edx, 4
call fcn.00425680
test eax, eax
je 0x52e32e
mov ecx, eax
lea eax, [ebx + ebx]
mov dword [esp + 0xf4], eax
lea eax, [ebx*8]
push eax
mov edi, dword [esp + 0x34]
push edi
push ecx
mov dword [esp + 0x1c], ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, edi
mov edx, 4
call fcn.004256e0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, ebx
jmp 0x52dac4
mov eax, dword [esp + 0x30]
mov dword [eax + edi*8], esi
mov dword [eax + edi*8 + 4], edx
inc edi
mov dword [esp + 0x30], eax
cmp edi, 2
jb 0x52d827
mov ebx, dword [esp + 0x2c]
mov esi, eax
jmp 0x52db56
mov ebx, edi
mov eax, edx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
lea edi, [esi - 1]
sub ecx, eax
push ecx
push eax
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
add eax, dword [esp + 0x34]
mov dword [edx + ecx*8 + 8], eax
mov eax, dword [esp + 0xe4]
mov dword [edx + ecx*8 + 0xc], eax
not ecx
add ecx, esi
mov esi, edx
mov edx, dword [esp + 0x84]
shl ecx, 3
lea eax, [edx + 8]
push ecx
push eax
push edx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ebx, dword [esp + 0x2c]
cmp edi, 1
jbe 0x52de3b
mov dword [esp + 0x18], edi
mov eax, dword [esi + edi*8 - 8]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esi + ecx*8 - 4]
add ecx, eax
cmp ecx, ebx
mov ecx, dword [esp + 0x18]
je 0x52dbc0
mov edx, dword [esi + ecx*8 - 0x10]
cmp edx, eax
jbe 0x52dbc0
cmp ecx, 2
jbe 0x52de42
mov ebx, esi
lea esi, [ecx - 3]
mov edi, ecx
mov ecx, dword [ebx + ecx*8 - 0x18]
mov dword [esp + 0x24], esi
lea esi, [edx + eax]
cmp ecx, esi
jbe 0x52dbce
mov ebx, dword [esp + 0x2c]
cmp edi, 3
jbe 0x52de49
mov esi, dword [esp + 0x30]
add edx, ecx
cmp dword [esi + edi*8 - 0x20], edx
mov edi, dword [esp + 0x24]
jbe 0x52dbe0
jmp 0x52de50
cmp ecx, 3
jb 0x52dbe8
lea edi, [ecx - 3]
mov ecx, dword [esi + ecx*8 - 0x18]
jmp 0x52dbe0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
nop word cs:[eax + eax]
cmp ecx, eax
mov ecx, dword [esp + 0x18]
jb 0x52dbeb
lea edi, [ecx - 2]
cmp ecx, edi
jbe 0x52e1fd
lea eax, [edi + 1]
cmp ecx, eax
jbe 0x52e20f
mov ecx, dword [esi + edi*8 + 4]
mov eax, dword [esi + edi*8 + 8]
mov ebx, esi
mov esi, dword [esi + edi*8 + 0xc]
add esi, eax
mov edx, esi
sub edx, ecx
mov dword [esp + 0x10], edx
jb 0x52e24c
cmp esi, dword [esp + 0x2c]
mov dword [esp + 0x3c], eax
ja 0x52e260
mov eax, dword [ebx + edi*8]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x34], eax
lea eax, [ecx + ecx*2]
mov ecx, ebx
mov edx, dword [esp + 0x34]
lea ebx, [edi + eax*8]
lea eax, [edx + edx*2]
lea edi, [ebx + eax*8]
lea eax, [esi + esi*2]
mov esi, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
sub edx, esi
cmp edx, esi
lea eax, [ecx + eax*8]
mov dword [esp + 0x84], eax
jae 0x52dd70
lea eax, [edx*8]
mov dword [esp + 0x10], edx
lea eax, [eax + eax*2]
mov dword [esp + 0xc], eax
push eax
push edi
push dword [esp + 0x24]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x28]
add esp, 0xc
add dword [esp + 0xc], edx
test esi, esi
jle 0x52daf0
cmp dword [esp + 0x10], 0
jle 0x52daf0
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
lea eax, [eax + ecx*8]
nop word cs:[eax + eax]
nop
mov ecx, dword [edi - 8]
cmp dword [esi - 8], ecx
jae 0x52dcf0
mov dword [esp + 0xc], esi
add edi, 0xffffffe8
jmp 0x52dd2f
mov ecx, dword [esi - 0x18]
setbe byte [esp + 0xc]
mov edx, dword [esi - 0x14]
cmp ecx, dword [edi - 0x18]
sbb edx, dword [edi - 0x14]
setb cl
and cl, byte [esp + 0xc]
movzx edx, cl
xor cl, 1
neg edx
lea edx, [edx + edx*2]
lea edi, [edi + edx*8]
movzx edx, cl
neg edx
test cl, cl
lea edx, [edx + edx*2]
lea esi, [esi + edx*8]
mov edx, dword [esp + 0x1c]
mov ecx, esi
mov dword [esp + 0xc], esi
jne 0x52dd31
mov ecx, edi
movsd xmm0, qword [ecx + 0x10]
cmp edi, ebx
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
movq qword [eax + 8], xmm1
movsd qword [eax], xmm0
jbe 0x52daf0
mov esi, dword [esp + 0xc]
add eax, 0xffffffe8
cmp esi, edx
ja 0x52dcd0
jmp 0x52daf0
lea eax, [esi*8]
lea eax, [eax + eax*2]
mov dword [esp + 0xc], eax
push eax
push ebx
push dword [esp + 0x24]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x28]
add esp, 0xc
add dword [esp + 0xc], edx
test esi, esi
jle 0x52daf2
cmp dword [esp + 0x10], esi
mov eax, esi
jle 0x52daf2
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x14]
lea eax, [eax + ecx*8]
mov dword [esp + 0x10], eax
mov eax, edx
nop dword [eax]
mov ecx, dword [edi + 0x10]
mov esi, dword [eax + 0x10]
cmp ecx, esi
jb 0x52dde8
mov edx, dword [edi]
cmp edx, dword [eax]
mov edx, dword [edi + 4]
sbb edx, dword [eax + 4]
setb byte [esp + 0x14]
xor edx, edx
cmp ecx, esi
ja 0x52de37
test byte [esp + 0x14], 1
mov ecx, eax
je 0x52ddec
mov dl, 1
mov ecx, edi
movsd xmm0, qword [ecx + 0x10]
movsd qword [ebx + 0x10], xmm0
movsd xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
mov ecx, edx
xor cl, 1
movzx ecx, cl
lea ecx, [ecx + ecx*2]
lea eax, [eax + ecx*8]
movq qword [ebx + 8], xmm1
movsd qword [ebx], xmm0
add ebx, 0x18
cmp eax, dword [esp + 0xc]
jae 0x52daf4
movzx ecx, dl
lea ecx, [ecx + ecx*2]
lea edi, [edi + ecx*8]
cmp edi, dword [esp + 0x10]
jb 0x52ddc0
jmp 0x52daf4
mov ecx, eax
jmp 0x52ddec
mov edi, 1
jmp 0x52de54
mov edi, 2
jmp 0x52de54
mov edi, 3
jmp 0x52de54
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
cmp eax, ebx
jb 0x52d837
jmp 0x52de6b
mov edi, dword [esp + 0x18]
jmp 0x52d856
mov ecx, dword [esp + 0x30]
mov edx, 4
call fcn.004256e0
mov ecx, dword [esp + 0x1c]
mov edx, 8
call fcn.004256e0
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x8c]
cmp eax, ebx
jbe 0x52dede
test ebx, ebx
je 0x52df78
shl eax, 3
lea edx, [eax + eax*4]
lea eax, [ebx*8]
lea edi, [eax + eax*4]
mov ecx, esi
push edi
push 8
call fcn.00425700
add esp, 8
test eax, eax
jne 0x52df89
mov ecx, 8
mov edx, edi
call fcn.00434230
jmp 0x52e441
mov eax, esi
jmp 0x52df89
mov dword [esp + 0x10], 0
jmp 0x52d22c
movq xmm1, qword [esp + 0x138]
movsd xmm0, qword [esp + 0x131]
movq qword [esp + 0x78], xmm1
movsd qword [esp + 0x71], xmm0
mov byte [esp + 0x70], al
jmp 0x52c306
mov dl, 0x35
jmp 0x52e0df
mov al, 0x35
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x9d]
mov ah, byte [esp + 0xa7]
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x74], edx
mov dword [esp + 0x71], ecx
mov ch, byte [esp + 0xa4]
movzx edx, word [esp + 0xa5]
mov byte [esp + 0x70], al
mov byte [esp + 0x78], ch
mov byte [esp + 0x7b], ah
mov word [esp + 0x79], dx
mov dword [esp + 0x7c], esi
jmp 0x52c306
mov dl, 0x13
mov esi, eax
jmp 0x52e0b1
mov ecx, esi
mov edx, 8
call fcn.004256e0
mov eax, 8
mov edi, dword [esp + 0xc0]
mov edx, dword [esp + 0xb8]
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x10], eax
cmp edx, edi
mov dword [esp + 0x18], edi
jbe 0x52dff2
mov esi, dword [esp + 0x28]
test edi, edi
je 0x52dffc
lea eax, [edi*8]
shl edx, 3
lea edi, [eax + eax*2]
lea edx, [edx + edx*2]
mov dword [esp + 0xc], ecx
push edi
push 8
call fcn.00425700
add esp, 8
mov dword [esp + 0x1c], eax
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x52e012
mov esi, dword [esp + 0xc]
mov ecx, 8
mov edx, edi
call fcn.00434230
jmp 0x52e441
mov esi, dword [esp + 0x28]
mov dword [esp + 0x1c], ecx
jmp 0x52e012
mov edx, 8
mov dword [esp + 0x1c], 8
call fcn.004256e0
mov eax, dword [esp + 0x10]
cmp dword [esi], 2
jne 0x52e036
mov dl, bh
mov edi, ebx
mov ecx, ebx
mov ebx, dword [esp + 0xfc]
xor eax, eax
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x58]
shr edi, 0x10
jmp 0x52d0db
test ebx, ebx
je 0x52e046
mov ecx, eax
mov edx, 8
call fcn.004256e0
cmp dword [esp + 0x18], 0
je 0x52d114
mov ecx, dword [esp + 0x1c]
mov edx, 8
call fcn.004256e0
jmp 0x52d114
mov dl, 0x35
jmp 0x52e0df
mov dword [esp + 0x6f], eax
mov dl, 0x13
movzx eax, word [esp + 0x70]
movq xmm0, qword [esp + 0x68]
mov word [esp + 0xa5], ax
movzx eax, byte [esp + 0x72]
movd ecx, xmm0
mov byte [esp + 0xa7], al
movq qword [esp + 0x9d], xmm0
shufps xmm0, xmm0, 0x55
mov esi, dword [esp + 0xa4]
movd eax, xmm0
shld eax, ecx, 8
jmp 0x52e0b1
mov dl, 0x35
movzx ecx, byte [esp + 0x9f]
movzx edi, word [esp + 0x9d]
mov byte [esp + 0x10e], cl
mov word [esp + 0x10c], di
jmp 0x52e0df
mov esi, edi
jmp 0x52e0dd
mov esi, dword [esp + 0xf8]
mov dl, 0x13
movzx ecx, byte [esp + 0x10e]
movzx edi, word [esp + 0x10c]
mov byte [esp + 0x73], cl
mov word [esp + 0x71], di
mov byte [esp + 0x70], dl
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0
jmp 0x52c306
mov ecx, dword [esp + 0x8c]
movzx eax, byte [esp + 0x89]
mov edx, dword [esp + 0x90]
movzx edi, word [esp + 0x8a]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ecx
jmp 0x52d0c9
mov dword [esp + 0x38], 0
mov dword [esp + 0x1c], 0
jmp 0x52d0c9
mov eax, dword [esp + 0x58]
mov byte [esp + 0x9d], al
mov al, 0x17
jmp 0x52df22
xor ecx, ecx
mov bl, 0x13
xor edx, edx
mov bh, cl
jmp 0x52e1d8
push 0x69c1c0
call fcn.0043a050
mov ebx, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
movdqa xmm0, xmm1
pshufd xmm0, xmm1, 0x55
mov edx, ebx
movd dword [esp + 0xf4], xmm0
shr edx, 0x10
mov esi, dword [esp + 0xf4]
mov byte [esp + 0x70], bl
mov byte [esp + 0x71], bh
mov word [esp + 0x72], dx
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
jmp 0x52c306
mov dword [esp + 0x130], 0x6c3460
mov edx, 0x6c3594
jmp 0x52e21f
mov edx, 0x6c35a4
mov dword [esp + 0x130], 0x6c3460
mov ecx, dword [esp + 0x11c]
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], 0x6c4590
mov dword [ecx + 0xc], 0
call fcn.00439fc0
jmp 0x52e441
mov edx, esi
push 0x6c35b4
call fcn.0043e3d0
add esp, 4
jmp 0x52e441
mov edx, dword [esp + 0x2c]
mov ecx, esi
push 0x6c35b4
call fcn.0043a6f0
add esp, 4
jmp 0x52e441
mov edx, 0x6c35a4
mov dword [esp + 0x130], 0x6c3460
jmp 0x52e29a
mov dword [esp + 0x130], 0x6c3460
mov edx, 0x6c3594
mov ecx, dword [esp + 0x12c]
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], 0x6c4590
mov dword [ecx + 0xc], 0
call fcn.00439fc0
jmp 0x52e441
push 0x6c35b4
call fcn.0043e3d0
add esp, 4
jmp 0x52e441
mov ecx, edx
mov edx, edi
push 0x6c35b4
call fcn.0043a6f0
add esp, 4
jmp 0x52e441
mov edx, 0x2c
mov ecx, str.assertion_failed:_end___start__end___len45l
push 0x6c3640
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov edx, 0x2c
mov ecx, str.assertion_failed:_end___start__end___len45l
push 0x6c3640
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov eax, 0x6c3650
jmp 0x52e388
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35f4
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov eax, 0x6c3650
jmp 0x52e3cc
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35f4
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
push 0x6c3584
call fcn.0043a6f0
add esp, 4
jmp 0x52e441
mov dword [esp + 0x60], ecx
mov eax, 0x6c3584
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0xc]
push eax
call fcn.0043e3d0
add esp, 4
jmp 0x52e441
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
mov edx, 0x2b
push 0x69c20c
call fcn.0043a9e0
mov edx, ebx
push 0x6c3584
call fcn.0043a6f0
add esp, 4
jmp 0x52e441
mov eax, 0x6c3584
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
push eax
call fcn.0043e3d0
add esp, 4
jmp 0x52e441
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35d4
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35e4
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35d4
call fcn.0043a9e0
add esp, 4
jmp 0x52e441
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_admin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x6c35e4
call fcn.0043a9e0
add esp, 4
ud2