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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xf8
mov esi, ecx
lea ecx, [esp + 0x64]
mov edx, 0x30
mov dword [esp + 0xd4], 0x53a854
mov dword [esp + 0xd8], 0x226
mov dword [esp + 0xdc], 0x226
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe0], 1
call fcn.0045f120
mov eax, dword [esp + 0x64]
mov dword [esp + 0xe4], esi
cmp eax, 2
jne 0x514bb2
movzx ecx, word [esp + 0x68]
cmp cl, 8
jne 0x514c62
lea ecx, [esp + 0x64]
lea edx, [esp + 0xd4]
call fcn.0045f2f0
mov eax, dword [esp + 0x64]
cmp eax, 2
jne 0x514fb3
mov ebx, dword [esp + 0xe0]
mov edx, dword [esp + 0x68]
add edx, ebx
setb cl
cmp edx, 0xfffffff
ja 0x515058
test cl, cl
jne 0x515058
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x5151cd
cmp edx, dword [esp + 0xd8]
jbe 0x515203
mov al, 2
mov dword [esp + 0xc], edx
mov dl, 0x15
xor esi, esi
mov dword [esp + 0x2c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x14], eax
mov dword [esp + 4], eax
jmp 0x5151fa
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x6a]
mov edx, dword [esp + 0x6c]
movzx esi, word [esp + 0x68]
movsd xmm0, qword [esp + 0x81]
mov ecx, dword [esp + 0x90]
shl eax, 0x10
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x88]
mov ebx, ecx
mov dword [esp + 0x20], edx
or esi, eax
mov eax, edx
mov eax, dword [esp + 0x7c]
shr edx, 8
shr ebx, 8
mov dword [esp + 0x2c], esi
mov dword [esp + 0x60], edx
shr esi, 8
movsd qword [esp + 0x57], xmm0
mov dword [esp + 0x4c], eax
movzx eax, byte [esp + 0x80]
mov byte [esp + 3], al
movzx eax, byte [esp + 0x6b]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x70]
mov dl, 0x15
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 0x34], eax
movzx eax, byte [esp + 0x7b]
mov dword [esp + 8], eax
movzx eax, word [esp + 0x79]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
jmp 0x514cb2
movzx eax, byte [esp + 0x6a]
mov dl, 0x15
xor esi, esi
mov dword [esp + 0x60], 8
mov dword [esp + 0x2c], 0
xor ebx, ebx
mov dword [esp + 0x10], 0
shl eax, 0x10
or ecx, eax
mov al, 0xc
and ecx, 0xffffff
mov dword [esp + 0x20], eax
mov dword [esp + 4], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x34], eax
movzx edi, byte [esp + 0x2c]
movzx eax, si
shl ebx, 8
movzx esi, byte [esp + 4]
shl eax, 8
or edi, eax
movzx eax, cl
shl esi, 0x18
movzx ecx, byte [esp + 0x5e]
or eax, ebx
or esi, edi
mov edi, dword [esp + 0x5a]
cmp dl, 0x15
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
mov byte [esp + 0x9c], cl
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], eax
movzx eax, byte [esp + 0x54]
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x55]
mov dword [esp + 4], eax
mov ah, byte [esp + 0x59]
mov byte [esp + 0x98], ah
jne 0x514e04
mov eax, dword [esp + 0x60]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov word [esp + 0xa8], ax
shr eax, 0x10
mov byte [esp + 0xaa], al
mov eax, dword [esp + 0xc]
mov dword [esp + 0xab], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xaf], ebp
shr ebp, 0x10
mov dword [esp + 0x14], ebp
mov byte [esp + 0xb3], al
mov eax, dword [esp + 0x18]
mov word [esp + 0xb4], ax
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0xa8]
mov ebp, dword [esp + 0xad]
mov ecx, eax
mov byte [esp + 0x18], al
shr eax, 8
cmp bl, 6
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb2]
jne 0x515108
mov ecx, dword [esp + 0x4c]
mov dword [esp + 8], edx
mov bh, byte [esp + 0x9c]
mov bl, byte [esp + 0x18]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x60], eax
mov eax, edi
mov edi, 5
mov dword [esp + 0x34], ecx
movzx ecx, byte [esp + 3]
mov byte [esp + 0x20], cl
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], ecx
movzx ecx, byte [esp + 0x24]
mov byte [esp + 3], cl
mov ecx, dword [esp + 4]
mov dword [esp + 0x28], ecx
movzx ecx, byte [esp + 0x98]
mov byte [esp + 0x24], cl
mov ecx, dword [esp + 0x2c]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x14]
jmp 0x51513d
mov ebx, dword [esp + 0xe0]
cmp dword [esp + 0xd4], 0
je 0x514f4c
mov eax, dword [esp + 0xd8]
mov edi, dword [esp + 0x4c]
sub eax, ebx
jne 0x514f7a
mov eax, dword [esp + 0x60]
mov ebp, edx
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0xf4]
mov ecx, dword [esp + 0xe4]
mov word [esp + 0xa8], ax
shr eax, 0x10
mov word [ecx + 0x3d], bx
mov byte [esp + 0xaa], al
mov eax, dword [esp + 0xc]
mov dword [esp + 0xab], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xaf], edx
shr edx, 0x10
mov byte [esp + 0xb3], al
mov eax, dword [esp + 0x18]
mov word [esp + 0xb4], ax
mov eax, ebx
mov ebx, dword [esp + 0x38]
shr eax, 0x10
mov byte [ecx + 0x3f], al
mov eax, ebx
shr eax, 0x18
mov byte [ecx + 0x33], al
mov eax, ebx
shr eax, 8
mov word [ecx + 0x31], ax
mov eax, dword [esp + 0x10]
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 4], esi
mov esi, dword [esp + 0x3c]
mov byte [ecx + 8], al
mov eax, dword [esp + 0xa8]
shl esi, 8
mov dword [ecx + 9], eax
mov eax, dword [esp + 0xc]
mov byte [ecx + 0xd], ah
mov eax, dword [esp + 0xad]
mov dword [ecx + 0xe], eax
mov eax, dword [esp + 0xb2]
mov byte [ecx + 0x12], dl
mov edx, dword [esp + 0x40]
mov dword [ecx + 0x13], eax
mov eax, dword [esp + 8]
mov byte [ecx + 0x17], al
movzx eax, byte [esp + 3]
mov dword [ecx + 0x18], edi
mov byte [ecx + 0x1c], al
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x1d], eax
movzx eax, byte [esp + 0x24]
mov byte [ecx + 0x21], al
mov eax, dword [esp + 4]
mov dword [ecx + 0x22], eax
movzx eax, byte [esp + 0x98]
mov byte [ecx + 0x26], al
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x27], eax
movzx eax, byte [esp + 0x9c]
mov byte [ecx + 0x2b], al
movzx eax, byte [esp + 0x1c]
mov dword [ecx + 0x2c], edx
mov byte [ecx + 0x30], bl
or esi, eax
mov eax, dword [esp + 0x44]
mov dword [ecx + 0x34], esi
mov dword [ecx + 0x38], eax
mov eax, ebp
mov byte [ecx + 0x3c], al
jmp 0x5151c2
mov ah, byte [esp + 0xac]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0xb1]
mov dword [esp + 0x14], eax
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x5150dc
mov ecx, dword [esp + 0xdc]
jae 0x51501f
mov edx, dword [esp + 0x38]
mov esi, ecx
inc ecx
je 0x51508b
cmp ecx, 0x10000000
jae 0x51508b
mov al, 2
mov dword [esp + 0x10], 1
mov dword [esp + 0x20], eax
jmp 0x5150af
mov edx, dword [esp + 0x6c]
movsd xmm0, qword [esp + 0x81]
mov edi, dword [esp + 0x68]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x10], eax
mov eax, edx
mov dword [esp + 0x20], edx
shr edx, 8
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x88]
mov eax, dword [esp + 0x7c]
mov ebx, ecx
mov esi, edi
mov dword [esp + 0x2c], edi
shr edi, 0x18
mov dword [esp + 0x60], edx
movzx edx, byte [esp + 0x80]
shr ebx, 8
shr esi, 8
mov dword [esp + 4], edi
mov dword [esp + 0x4c], eax
movsd qword [esp + 0x57], xmm0
mov byte [esp + 3], dl
jmp 0x514c24
mov edx, dword [esp + 0x38]
cmp eax, 0xfffffff
ja 0x51509d
mov dword [esp + 0xab], ebx
mov dword [esp + 0xaf], eax
shr eax, 0x10
mov cl, 0xe
mov dword [esp + 0x14], eax
mov ah, bh
mov dword [esp + 0x10], 1
mov dword [esp + 0x20], ecx
mov dword [esp + 0xc], eax
jmp 0x5150dc
mov eax, edx
mov esi, edx
xor ebx, ebx
mov dword [esp + 0x60], 0
mov dword [esp + 0x10], 0
shr eax, 0x18
shr esi, 8
mov dword [esp + 4], eax
mov eax, edx
mov dl, 0x15
mov dword [esp + 0x2c], eax
mov al, 8
mov dword [esp + 0x20], eax
jmp 0x514c9e
mov al, 8
mov ebx, ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], eax
jmp 0x5150af
mov esi, ecx
mov cl, 8
mov dword [esp + 0x10], 0
mov ebx, eax
mov dword [esp + 0x20], ecx
mov byte [esp + 0xaa], 0
mov word [esp + 0xa8], 0
mov dword [esp + 0xab], ecx
mov dword [esp + 0xaf], esi
shr esi, 0x10
mov eax, ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], esi
mov eax, edx
mov esi, ebx
mov edi, dword [esp + 0xa8]
mov ebp, dword [esp + 0xad]
mov eax, dword [esp + 0xb2]
mov ebx, dword [esp + 0x20]
mov ecx, edx
mov byte [esp + 0x18], dl
xor edx, edx
shr ecx, 8
mov dword [esp + 0x38], ecx
mov ecx, edx
mov ecx, dword [esp + 0x14]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x20], dl
mov dh, bl
mov dword [esp + 0x60], ebp
mov ebp, edi
mov edi, dword [esp + 0x10]
movzx ebx, byte [esp + 0x9c]
mov bh, byte [esp + 0x98]
mov dword [esp + 0x34], eax
mov eax, esi
mov cl, ch
mov esi, dword [esp + 0xe4]
mov dword [esi], edi
mov dword [esi + 4], eax
mov eax, dword [esp + 0x60]
mov byte [esi + 8], dh
mov dword [esi + 9], ebp
mov byte [esi + 0xd], cl
mov dword [esi + 0xe], eax
mov eax, dword [esp + 8]
mov byte [esi + 0x12], al
mov eax, dword [esp + 0x34]
mov dword [esi + 0x13], eax
movzx eax, byte [esp + 0x20]
mov byte [esi + 0x17], al
mov eax, dword [esp + 0x4c]
mov dword [esi + 0x18], eax
movzx eax, byte [esp + 3]
mov byte [esi + 0x1c], al
mov eax, dword [esp + 0x28]
mov dword [esi + 0x1d], eax
movzx eax, byte [esp + 0x24]
mov byte [esi + 0x21], al
mov eax, dword [esp + 4]
mov dword [esi + 0x22], eax
mov eax, dword [esp + 0x2c]
mov byte [esi + 0x26], bh
mov dword [esi + 0x27], eax
mov eax, dword [esp + 0x40]
mov byte [esi + 0x2b], bl
mov dword [esi + 0x2c], eax
movzx eax, byte [esp + 0x18]
mov byte [esi + 0x30], al
mov eax, dword [esp + 0x38]
mov word [esi + 0x31], ax
shr eax, 0x10
mov byte [esi + 0x33], al
mov byte [esi + 0x3c], 0x15
add esp, 0xf8
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ebx
mov esi, ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0xd4], 0
mov dword [esp + 0x10], 1
mov dl, 0x15
shr eax, 0x18
shr esi, 8
mov dword [esp + 4], eax
mov al, 1
mov dword [esp + 0x20], eax
mov dword [esp + 8], eax
jmp 0x514ca6
test cl, cl
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
mov dword [esp + 0xc8], edx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xe0], edx
mov dword [esp + 0x2c], ebx
je 0x5153a3
mov ecx, edx
mov esi, ebx
mov ebx, edx
mov edi, 2
inc ecx
sete al
cmp ecx, 0x10000000
setae dl
or dl, al
mov eax, 8
cmovne edi, eax
mov eax, esi
cmovne eax, ecx
xor dl, 1
movzx edx, dl
mov dword [esp + 4], edx
mov edx, eax
mov dword [esp + 0x9c], 0
mov dword [esp + 0x20], 0
xor ebp, ebp
mov dword [esp + 0x44], 0
shr edx, 8
mov dword [esp + 0x10], edx
mov edx, eax
shr edx, 0x18
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], edx
mov esi, edi
mov dword [esp + 0x40], ebp
mov dword [esp + 8], edi
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x10]
mov edx, ebx
mov dword [esp + 0xc], ecx
mov ecx, eax
shr edx, 8
shr esi, 8
movzx eax, bp
movzx ebp, byte [esp + 0x14]
movzx ecx, cl
shl eax, 8
or ecx, eax
mov eax, dword [esp + 4]
shl ebp, 0x18
or ebp, ecx
test eax, eax
cmove ebp, eax
add ebp, edi
movzx edi, bl
setb al
cmp ebp, 0x10000000
mov dword [esp + 0x2c], ebp
setb cl
not al
shl edx, 8
shl esi, 8
and cl, al
or edi, edx
movzx edx, byte [esp + 8]
movzx eax, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
or edx, esi
shr ecx, 0x10
mov dword [esp + 8], ecx
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
mov word [esp + 0x50], ax
shr eax, 0x10
mov esi, ecx
shr ecx, 0x18
mov byte [esp + 0x52], al
mov eax, dword [esp + 0x98]
shr esi, 8
mov dword [esp + 4], ecx
mov dword [esp + 0x53], eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x57], al
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], edx
mov word [esp + 0x58], ax
shr eax, 0x10
mov byte [esp + 0x5a], al
movzx eax, byte [esp + 3]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], edi
mov dword [esp + 0x5b], eax
mov eax, dword [esp + 0x28]
mov byte [esp + 3], al
mov eax, edx
mov eax, dword [esp + 0x1c]
shr edx, 8
mov dword [esp + 0x60], edx
mov dl, 0x15
mov ecx, eax
mov dword [esp + 0x1c], eax
jmp 0x514cb2
mov edi, ebx
mov ebp, ebx
mov ebx, edx
inc edi
sete dl
cmp edi, 0x10000000
setae cl
or cl, dl
cmp ebx, ebp
mov edx, ebx
jne 0x5153d6
mov eax, edi
test cl, cl
je 0x5153ee
mov dword [esp + 4], 0
mov edi, 8
jmp 0x515263
test cl, cl
je 0x515411
mov eax, edi
mov dword [esp + 4], 0
mov edi, 8
jmp 0x515263
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov edi, 2
mov dword [esp + 0xc0], 0
mov dword [esp + 4], 1
jmp 0x515263
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0xcc], edi
movzx edx, byte [eax + ecx]
lea ecx, [esp + 0x64]
call fcn.0045f120
mov eax, dword [esp + 0x64]
cmp eax, 2
jne 0x5154e6
movzx ecx, word [esp + 0x68]
cmp cl, 8
jne 0x5155a4
lea ecx, [esp + 0x64]
lea edx, [esp + 0xc0]
call fcn.0045f2f0
mov eax, dword [esp + 0x64]
cmp eax, 2
jne 0x515607
mov ecx, dword [esp + 0xcc]
mov edi, dword [esp + 0x68]
add edi, ecx
setb al
cmp edi, 0xfffffff
ja 0x5156d7
test al, al
jne 0x5156d7
mov eax, dword [esp + 0xc0]
test eax, eax
je 0x515731
cmp edi, dword [esp + 0xc4]
jbe 0x51577f
mov ebx, dword [esp + 0xc8]
mov al, 2
mov dword [esp + 0xc], edi
mov edi, ecx
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], eax
mov edx, ebx
shr edx, 8
jmp 0x5152be
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x7b]
movzx edx, word [esp + 0x79]
mov ebp, dword [esp + 0x90]
movzx esi, byte [esp + 0x6a]
movzx ecx, word [esp + 0x68]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x74]
shl eax, 0x10
shl esi, 0x10
mov dword [esp + 0x1c], ebp
or edx, eax
or esi, ecx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x80]
shr esi, 8
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x7c]
mov eax, edx
mov dword [esp + 0x28], edx
shr edx, 8
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x8c]
mov eax, edx
mov dword [esp + 0x24], edx
shr edx, 8
mov eax, dword [esp + 0x94]
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], edx
mov edx, ebp
mov edx, dword [esp + 0x84]
mov dword [esp + 0x44], eax
shrd ebp, eax, 8
mov eax, ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x98], edx
movzx edx, byte [esp + 0x78]
mov byte [esp + 3], dl
movzx edx, byte [esp + 0x6b]
mov dword [esp + 0x14], edx
jmp 0x51529e
movzx eax, byte [esp + 0x6a]
mov esi, 8
mov dword [esp + 4], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
xor edx, edx
xor ebp, ebp
mov dword [esp + 0x20], 0
mov dword [esp + 0x9c], 0
shl eax, 0x10
or ecx, eax
mov al, 0xc
and ecx, 0xffffff
mov dword [esp + 8], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
jmp 0x5152be
mov esi, dword [esp + 0x6c]
mov dword [esp + 4], eax
movzx ecx, word [esp + 0x79]
mov ebp, dword [esp + 0x90]
mov ebx, dword [esp + 0x74]
mov eax, esi
movzx eax, byte [esp + 0x7b]
mov dword [esp + 0x1c], ebp
mov edx, ebx
mov dword [esp + 8], esi
shr esi, 8
shr edx, 8
shl eax, 0x10
or ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x80]
mov eax, ecx
mov dword [esp + 0x28], ecx
shr ecx, 8
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x88]
mov eax, ecx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x24], ecx
shr ecx, 8
mov dword [esp + 0x20], ecx
mov ecx, eax
mov edi, eax
shr ecx, 0x18
shr edi, 8
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x44], ecx
mov ecx, ebp
mov ecx, eax
mov eax, dword [esp + 0x44]
shrd ebp, eax, 8
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x40], ebp
mov ebp, edi
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0xcc]
mov dword [esp + 0x98], eax
movzx eax, byte [esp + 0x78]
mov byte [esp + 3], al
mov eax, dword [esp + 0x70]
mov dword [esp + 0xc], eax
jmp 0x5152be
mov eax, edi
mov ebp, edi
mov dl, 8
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
xor esi, esi
mov dword [esp + 4], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x9c], 0
shr eax, 0x18
mov dword [esp + 8], edx
shr ebp, 8
xor edx, edx
mov dword [esp + 0x14], eax
mov eax, edi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
jmp 0x5152be
mov eax, ecx
mov ebp, ecx
mov dword [esp + 0xc0], 0
mov dword [esp + 0x44], 0
mov edi, ecx
mov dword [esp + 0x40], 0
mov dword [esp + 4], 1
shr eax, 0x18
shr ebp, 8
mov dword [esp + 0x14], eax
mov al, 1
mov dword [esp + 8], eax
mov eax, ecx
mov ecx, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
jmp 0x5152be
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0xcc], edi
lea edi, [esp + 0x64]
mov dword [esp + 0x5c], ecx
lea edx, [esp + 0x50]
mov ecx, edi
call fcn.0045eeb0
mov ebx, dword [esp + 0x64]
cmp ebx, 2
jne 0x515817
movzx eax, word [esp + 0x6c]
cmp al, 5
jne 0x5158cc
mov ebp, dword [esp + 0x50]
test ebp, ebp
je 0x515923
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
sub eax, ecx
jae 0x51593f
mov esi, dword [esp + 0x58]
mov ebx, 8
mov edi, 2
mov eax, esi
mov dword [esp + 0x34], esi
inc esi
sete al
cmp esi, 0x10000000
mov dword [esp + 0xc], esi
setae dl
or dl, al
cmovne edi, ebx
cmovne ecx, esi
xor dl, 1
mov dword [esp + 8], edi
movzx ebx, dl
jmp 0x5159f3
movzx esi, byte [esp + 0x6e]
movzx ecx, word [esp + 0x6c]
mov ebp, dword [esp + 0x90]
mov edx, dword [esp + 0x70]
shl esi, 0x10
mov eax, ecx
mov dword [esp + 8], ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x80]
or esi, ecx
mov ecx, dword [esp + 0x74]
shr esi, 8
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x88]
mov eax, ecx
movzx eax, byte [esp + 0x7b]
mov dword [esp + 0x34], ecx
shr ecx, 8
mov dword [esp + 0xa4], ecx
movzx ecx, word [esp + 0x79]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x8c]
shl eax, 0x10
or ecx, eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x18], ecx
mov ecx, ebp
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x38], edx
shrd ebp, eax, 8
mov dword [esp + 0x44], eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 0x40], ebp
mov byte [esp + 3], al
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x98], eax
movzx eax, byte [esp + 0x6f]
jmp 0x515a19
mov ecx, eax
movzx eax, byte [esp + 0x6e]
mov esi, 5
shl eax, 0x10
or ecx, eax
mov al, 0xc
and ecx, 0xffffff
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], 0
xor eax, eax
mov dword [esp + 0xa4], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
jmp 0x515a29
mov dword [esp + 0x50], 0
mov al, 1
mov ebx, 1
mov ecx, dword [esp + 0x5c]
mov dword [esp + 8], eax
jmp 0x5159f3
mov edx, dword [esp + 0x68]
cmp eax, edx
mov dword [esp + 0xc], edx
jae 0x515986
mov edx, dword [esp + 0x58]
xor ebx, ebx
add dword [esp + 0xc], edx
mov eax, edx
mov al, 8
mov dword [esp + 0x34], edx
mov dword [esp + 8], eax
jb 0x5159ef
cmp dword [esp + 0xc], 0xfffffff
ja 0x5159ef
mov ebx, 1
mov al, 2
mov dword [esp + 0x50], 0
mov dword [esp + 8], eax
jmp 0x5159f3
mov eax, ecx
xor ebx, ebx
add eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov al, 8
mov dword [esp + 8], eax
jb 0x515ab6
cmp dword [esp + 0x14], 0xfffffff
ja 0x515ab6
mov eax, dword [esp + 0x14]
cmp dword [esp + 0xc], 0xfffffff
mov dword [esp + 0x5c], eax
ja 0x5159ef
mov eax, dword [esp + 0xc]
mov dl, 5
xor esi, esi
mov dword [esp + 8], edx
add eax, 0xfffffffe
cmp eax, 0x25
ja 0x515c7d
add ecx, ebp
cmp byte [ecx], 0x77
ja 0x515c7d
mov eax, 1
xor esi, esi
xor edx, edx
jmp 0x515ac9
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
xor esi, esi
shr eax, 8
mov dword [esp + 0xa4], eax
mov dword [esp + 0x1c], eax
xor eax, eax
mov edx, dword [esp + 0x5c]
test ebx, ebx
mov dword [esp + 0x50], 0
jne 0x515a2b
xor ecx, ecx
add edx, ecx
movzx eax, al
setb cl
cmp edx, 0x10000000
setb bl
not cl
shl esi, 8
shl eax, 0x18
and bl, cl
mov ecx, dword [esp + 0xc]
or eax, esi
shrd eax, ecx, 8
shr ecx, 8
movzx esi, bl
shld ecx, eax, 8
shl eax, 8
mov ebx, edx
mov dword [esp + 4], esi
movzx esi, byte [esp + 8]
mov dword [esp + 0xc], ecx
or esi, eax
mov eax, esi
mov edx, ebx
mov edi, dword [esp + 0x28]
mov ebp, ebx
mov ecx, ebx
mov ebx, dword [esp + 0x34]
mov esi, eax
mov dword [esp + 8], eax
shr edx, 0x18
shr ebp, 8
shr esi, 8
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x24]
shr edi, 8
mov dword [esp + 0x9c], edi
mov edi, dword [esp + 0x2c]
shr edx, 8
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0xa4]
jmp 0x5152be
mov ecx, dword [esp + 0x14]
jmp 0x51593a
xor ebx, ebx
add eax, ebx
cmp eax, dword [esp + 0xc]
jae 0x515af9
lea ebx, [edx + eax]
cmp ebx, dword [esp + 0xc]
jae 0x515c7d
movzx ebx, byte [ecx + ebx]
cmp edx, 4
jne 0x515ae8
cmp bl, 0xf
ja 0x515c7d
inc edx
test bl, bl
js 0x515abf
mov ebx, edx
xor edx, edx
add eax, ebx
cmp eax, dword [esp + 0xc]
jb 0x515ac9
cmp dword [esp + 0xc], 0x28
xorps xmm0, xmm0
mov dword [esp + 0x87], 0
movups xmmword [esp + 0x74], xmm0
movups xmmword [esp + 0x64], xmm0
mov dword [esp + 0x83], 0
jae 0x5167c7
push dword [esp + 0xc]
push ecx
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, word [esp + 0x64]
movzx ecx, byte [esp + 0x73]
mov edx, dword [esp + 0x67]
mov edi, dword [esp + 0x6b]
movzx esi, byte [esp + 0x66]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x6f]
mov dword [esp + 0x34], ecx
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], edx
mov ebx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x60], edi
movzx edi, byte [esp + 0x76]
mov ecx, eax
mov byte [esp + 0xf0], al
shr eax, 0x18
shr ecx, 8
cmp dword [esp + 0x54], edx
mov edx, dword [esp + 0x7b]
mov byte [esp + 0xf3], al
mov word [esp + 0xf1], cx
movzx ecx, word [esp + 0x74]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x7f]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x77]
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x83]
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x87]
mov dword [esp + 0x24], ecx
jbe 0x515c82
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x64]
movzx edx, byte [ebp + eax]
call fcn.0045f120
mov eax, dword [esp + 0x64]
cmp eax, 2
mov dword [esp + 0x10], eax
jne 0x515dd6
lea ecx, [esp + 0x64]
lea edx, [esp + 0x50]
call fcn.0045eeb0
mov eax, dword [esp + 0x64]
cmp eax, 2
mov dword [esp + 0x10], eax
jne 0x515e9a
mov eax, dword [esp + 0x50]
test eax, eax
mov dword [esp + 0x38], eax
je 0x515f92
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x5c]
sub eax, edx
jae 0x515fea
mov ecx, dword [esp + 0x58]
mov esi, 8
mov edi, ecx
mov eax, ecx
mov dword [esp + 0x34], ecx
mov ecx, 2
inc edi
sete al
cmp edi, 0x10000000
mov dword [esp + 4], edi
setae ah
or ah, al
cmovne ecx, esi
cmovne edx, edi
xor ah, 1
movzx eax, ah
mov dword [esp + 8], ecx
mov dword [esp + 0x10], eax
jmp 0x51632d
jmp 0x5158ed
mov al, 0x14
xor edx, edx
mov dword [esp + 0xbc], eax
xor eax, eax
mov ecx, dword [esp + 0x20]
shl esi, 0x18
and edx, 0xffffff
shl edi, 0x10
or edx, eax
mov eax, dword [esp + 0x44]
add dword [esp + 0xa4], edi
mov dword [esp + 0x38], edx
shl ecx, 8
or esi, ecx
movzx ecx, byte [esp + 0xc]
or ecx, esi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x1c]
shrd ecx, eax, 8
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov eax, ecx
mov byte [esp + 3], cl
shr ecx, 8
cmp byte [esp + 0xbc], 0x15
mov dword [esp + 0x18], ecx
jne 0x515cfe
mov eax, dword [esp + 0xec]
jmp 0x515a70
mov esi, dword [esp + 0x5c]
cmp dword [esp + 0x50], 0
je 0x515f3e
mov ecx, dword [esp + 0x54]
mov eax, esi
sub ecx, esi
jne 0x515f5e
cmp dword [esp + 0xc0], 0
je 0x516049
lea ecx, [esp + 0x64]
lea edx, [esp + 0xc0]
call fcn.0045eeb0
mov eax, dword [esp + 0x64]
cmp eax, 2
mov dword [esp + 0x48], eax
jne 0x516083
movzx ecx, word [esp + 0x6c]
cmp cl, 2
jne 0x51629f
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x48], 1
test ecx, ecx
mov dword [esp + 0xd0], ecx
je 0x5163ba
mov ecx, dword [esp + 0xc4]
cmp eax, ecx
jbe 0x51642f
mov edi, dword [esp + 0xc8]
mov ebp, 8
mov esi, 2
mov ebx, eax
mov dword [esp + 0xa0], edi
inc edi
sete cl
cmp edi, 0x10000000
mov dword [esp + 0x30], edi
setae dl
or dl, cl
cmovne esi, ebp
cmovne ebx, edi
xor dl, 1
movzx edx, dl
mov dword [esp + 0x3c], esi
mov esi, edi
mov edi, ebx
mov dword [esp + 0x48], edx
jmp 0x5163c4
movzx eax, byte [esp + 0x6a]
movzx edx, word [esp + 0x68]
movzx ecx, word [esp + 0x75]
mov edi, dword [esp + 0x6c]
movzx esi, word [esp + 0x79]
mov ebx, dword [esp + 0x70]
mov ebp, dword [esp + 0x90]
shl eax, 0x10
mov dword [esp + 8], edi
mov dword [esp + 0x1c], ebp
or edx, eax
movzx eax, byte [esp + 0x77]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x7b]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x7c]
shl eax, 0x10
mov dword [esp + 0x4c], ecx
movzx ecx, byte [esp + 0x74]
or esi, eax
mov eax, edi
mov edi, ebp
mov edi, dword [esp + 0x84]
shrd eax, ebx, 8
shr ebx, 8
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x94]
mov dword [esp + 4], ebx
movzx ebx, byte [esp + 0x78]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x98], edi
mov edi, dword [esp + 0x88]
shrd ebp, esi, 8
mov dword [esp + 0x44], esi
mov byte [esp + 3], bl
movzx ebx, byte [esp + 0x6b]
mov dword [esp + 0x40], ebp
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], ecx
jmp 0x51637e
movzx eax, byte [esp + 0x6e]
movzx ecx, word [esp + 0x6c]
movzx esi, word [esp + 0x79]
mov ebp, dword [esp + 0x90]
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x68]
shl eax, 0x10
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x98], edi
mov edi, dword [esp + 0x88]
or ecx, eax
movzx eax, byte [esp + 0x6f]
mov dword [esp + 8], ecx
movzx ecx, byte [esp + 0x7b]
mov dword [esp + 0x24], edi
shl ecx, 0x10
or esi, ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x18], esi
mov esi, ebp
mov esi, dword [esp + 0x7c]
shrd ebp, ecx, 8
mov dword [esp + 0x44], ecx
movzx ecx, byte [esp + 0x78]
mov dword [esp + 0x40], ebp
mov dword [esp + 0x4c], esi
mov byte [esp + 3], cl
mov ecx, dword [esp + 0x70]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x38], ecx
jmp 0x516343
mov ebp, esi
mov al, 1
mov ecx, esi
mov dword [esp + 4], 1
shr ebp, 8
mov dword [esp + 8], eax
mov eax, ecx
mov dword [esp + 0x10], eax
jmp 0x5161e3
mov ebx, dword [esp + 0x58]
jae 0x515fb3
mov eax, ebx
inc eax
mov dword [esp + 0xc], eax
je 0x5161b9
cmp dword [esp + 0xc], 0x10000000
jae 0x5161b9
mov al, 2
mov dword [esp + 4], 1
mov dword [esp + 8], eax
jmp 0x5161d1
mov dword [esp + 0x50], 0
mov dword [esp + 8], 1
mov dword [esp + 0x10], 1
mov edx, dword [esp + 0x5c]
jmp 0x51632d
cmp ecx, 0xfffffff
ja 0x5161c1
mov eax, ecx
mov ebx, esi
mov ebp, esi
mov dword [esp + 4], 1
mov edi, esi
mov dword [esp + 0xc], esi
shr eax, 8
shr ebp, 8
mov edx, eax
mov al, 0xe
mov dword [esp + 8], eax
mov eax, ebx
mov ebx, ecx
jmp 0x5161df
mov ecx, dword [esp + 0x68]
cmp eax, ecx
mov dword [esp + 4], ecx
jae 0x51621c
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 8
add dword [esp + 4], ecx
mov eax, ecx
mov dword [esp + 0x34], ecx
jb 0x516296
cmp dword [esp + 4], 0xfffffff
ja 0x516296
mov dword [esp + 0x50], 0
mov dword [esp + 0x10], 1
mov dword [esp + 8], 2
jmp 0x51632d
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x3c], 1
xor eax, eax
mov dword [esp + 0xa0], 0
mov dword [esp + 0x10], 1
mov dword [esp + 8], 0
jmp 0x516311
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
movzx ecx, word [esp + 0x81]
mov edi, dword [esp + 0xcc]
mov eax, ebx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xb8], edx
shld eax, edx, 0x18
mov dword [esp + 4], eax
movzx eax, byte [esp + 0x83]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x8b]
mov dword [esp + 0x9c], ecx
movzx ecx, word [esp + 0x89]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x93]
mov dword [esp + 0x20], ecx
movzx ecx, word [esp + 0x91]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 0x40], ecx
mov ecx, ebx
shld ebx, edx, 8
shld ecx, edx, 0x10
mov byte [esp + 3], al
mov eax, dword [esp + 0x68]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
movzx eax, byte [esp + 0x7b]
mov dword [esp + 8], eax
movzx eax, word [esp + 0x79]
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 0x28], eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x38], eax
movzx eax, byte [esp + 0x90]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x3c]
movzx ecx, cl
movzx esi, byte [esp + 0xb8]
shl ebx, 0x18
shl ecx, 0x10
or ecx, ebx
shl edx, 8
shr eax, 8
movzx edx, dx
or edx, ecx
or esi, edx
cmp dword [esp + 0x48], 0
mov dword [esp + 0xc], esi
jne 0x5162f2
jmp 0x5162ea
mov esi, dword [esp + 0xc]
mov al, 8
jmp 0x5161c5
mov al, 8
mov esi, ecx
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, ebx
mov ebp, esi
shr eax, 8
shr ebp, 8
mov edx, eax
mov eax, esi
mov dword [esp + 0x10], eax
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
shr esi, 0x18
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x9c], 0
mov dword [esp + 0x14], esi
xor esi, esi
jmp 0x5152be
mov eax, edx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 8
add eax, dword [esp + 4]
jb 0x51632b
cmp eax, 0xfffffff
ja 0x51632b
movzx ebp, word [esp + 0x6c]
movzx ecx, byte [esp + 0x6e]
cmp dword [esp + 4], 0x10000000
mov dword [esp + 0x5c], eax
mov dword [esp + 0xbc], ebp
jae 0x516296
shl ecx, 0x10
mov eax, dword [esp + 0x38]
add ecx, dword [esp + 0xbc]
add eax, edx
shr ecx, 8
mov edx, eax
and eax, 0xff000000
mov dword [esp + 0xf4], ecx
mov ecx, dword [esp + 4]
mov ebp, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x44], ecx
jmp 0x515c8f
mov edx, dword [esp + 4]
jmp 0x51632d
movzx eax, byte [esp + 0x6e]
mov edi, dword [esp + 0xcc]
mov dword [esp + 8], 0
mov dword [esp + 0x3c], 0xc
mov dword [esp + 0xa0], 0
shl eax, 0x10
or ecx, eax
mov eax, 2
and ecx, 0xffffff
mov dword [esp + 0xc], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], 0
add edi, dword [esp + 0x30]
setb cl
cmp edi, 0x10000000
mov dword [esp + 0x2c], edi
not cl
setb dl
and dl, cl
movzx ecx, dl
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xa0]
movzx edx, byte [esp + 0x3c]
shl eax, 8
or edx, eax
mov dword [esp + 0x14], ecx
jmp 0x51531a
mov edx, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
xor eax, eax
movzx esi, al
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x5c]
mov ebx, edx
shl esi, 0x18
shr ebx, 0x18
and eax, 0xffff00
shr ecx, 8
mov dword [esp + 0x14], edi
or eax, esi
mov esi, dword [esp + 4]
mov dword [esp + 0xa4], ecx
shrd eax, esi, 8
shr esi, 8
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x10]
movzx esi, bl
and edx, 0xffffff
mov dword [esp + 0x50], 0
shl esi, 0x18
or edx, esi
test ecx, ecx
cmove edx, ecx
mov ecx, dword [esp + 4]
add edx, dword [esp + 0x14]
setb bh
cmp edx, 0x10000000
not bh
setb bl
and bl, bh
jmp 0x515a53
mov dword [esp + 0x3c], 1
mov edi, eax
mov ebx, dword [esp + 0x30]
mov ecx, ebx
shr ecx, 8
mov dword [esp + 4], ecx
mov ecx, ebx
shr ebx, 0x18
shr ecx, 0x10
mov edx, dword [esp + 0x30]
cmp dword [esp + 0x48], 2
mov dword [esp + 0x30], edi
mov edi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], eax
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0xb8], edx
mov edx, 0x210
je 0x51531a
jmp 0x51617d
jne 0x516465
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x3c], 8
mov dword [esp + 0xa0], ecx
inc ecx
mov dword [esp + 0x30], ecx
je 0x5164ba
cmp dword [esp + 0x30], 0xfffffff
ja 0x5164ba
mov dword [esp + 0x3c], 2
jmp 0x5163c2
mov edx, eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x3c], 8
inc edx
mov edi, edx
je 0x5164cb
cmp edi, 0xfffffff
mov edx, edi
ja 0x5164cb
mov edx, dword [esp + 0x68]
mov dword [esp + 0xb8], 1
mov dword [esp + 0xa0], edx
sub edx, 1
mov dword [esp + 0x30], edx
jae 0x5164d0
mov dword [esp + 8], 0
mov dword [esp + 0x3c], 2
jmp 0x51653f
mov edi, dword [esp + 0x30]
mov dword [esp + 0x48], 0
jmp 0x5163c4
jmp 0x5163c4
cmp dword [esp + 0xa0], 0x10000001
jae 0x51652f
sub ecx, edi
mov edx, edi
jae 0x516568
mov edx, dword [esp + 0xc8]
mov esi, 2
mov dword [esp + 0xa0], edx
inc edx
sete al
cmp edx, 0x10000000
mov dword [esp + 0x30], edx
setae cl
or cl, al
mov eax, 8
cmovne esi, eax
mov eax, edx
mov dword [esp + 0x3c], esi
mov esi, edi
cmovne esi, edx
xor cl, 1
movzx eax, cl
mov dword [esp + 0x48], eax
jmp 0x5165d7
mov dword [esp + 8], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 4], 0
xor ebx, ebx
mov dword [esp + 0x48], 0
mov dword [esp + 0x18], eax
xor ecx, ecx
jmp 0x51617d
cmp ecx, dword [esp + 0x30]
jae 0x5165b0
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x48], 0
mov dword [esp + 0x3c], 8
add dword [esp + 0x30], eax
mov dword [esp + 0xa0], eax
jb 0x5165d3
cmp dword [esp + 0x30], 0xfffffff
ja 0x5165d3
mov esi, edi
mov dword [esp + 0x48], 1
mov dword [esp + 0x3c], 2
jmp 0x5165d7
mov edx, dword [esp + 0x30]
mov ecx, edi
lea esi, [edi + edx]
cmp esi, 0xfffffff
jbe 0x5165f5
mov dword [esp + 0x48], 0
mov dword [esp + 0x3c], 8
jmp 0x5165d7
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x30]
mov eax, ebx
mov ecx, ebx
shr ebx, 0x18
shr eax, 8
shr ecx, 0x10
mov dword [esp + 4], eax
mov eax, edi
mov edi, esi
jmp 0x5163d9
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x3c], 0x2020210
movzx eax, byte [ecx + eax]
cmp al, 7
ja 0x516617
cmp dword [esp + 0x30], 0
jne 0x516655
test al, al
je 0x516655
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 8], 0
mov edi, esi
mov dword [esp + 4], 0
xor ebx, ebx
mov dword [esp + 0x48], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0xb8], 0
xor ecx, ecx
jmp 0x51617d
mov ecx, dword [esp + 0x30]
lea ecx, [ecx*8]
sub ecx, eax
mov dword [esp + 0xb8], ecx
jae 0x5166b2
mov ebx, dword [esp + 0xb8]
mov dword [esp + 8], 0
mov dword [esp + 0x3c], 8
mov edi, esi
mov dword [esp + 0x48], 0
mov eax, ebx
mov ecx, ebx
shr ebx, 0x18
shr eax, 8
shr ecx, 0x10
mov dword [esp + 4], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], eax
jmp 0x51617d
test eax, eax
mov dword [esp + 8], 0
jne 0x5167da
add dword [esp + 0xd0], edi
mov edx, 0x210
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x10], 0
je 0x51531a
movzx eax, byte [esp + 0x34]
shl dword [esp + 0xa4], 8
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc4]
sub eax, esi
jne 0x51680c
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x60]
movzx edi, bl
mov ebp, dword [esp + 4]
mov edx, ebx
and edx, 0xff000000
mov word [esp + 0x50], ax
shr eax, 0x10
mov esi, ecx
mov esi, dword [esp + 0x30]
mov byte [esp + 0x52], al
mov eax, ecx
shld eax, ebx, 0x18
mov ebx, dword [esp + 0x24]
movzx eax, ax
shl eax, 8
and esi, 0xffffff00
or edi, eax
mov eax, ecx
movzx ecx, cl
and eax, 0xffffff00
or edi, edx
mov edx, ebp
shr ebx, 8
or ecx, eax
mov eax, dword [esp + 0x4c]
shr edx, 8
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xd0]
mov dword [esp + 0xc], edi
mov dword [esp + 0x53], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], edx
mov byte [esp + 0x57], al
shr eax, 8
mov word [esp + 0x58], ax
shr eax, 0x10
mov byte [esp + 0x5a], al
mov eax, dword [esp + 0x98]
mov dword [esp + 0x5b], eax
mov eax, ecx
shr ecx, 0x18
mov dword [esp + 8], ecx
mov ecx, ebp
mov dword [esp + 0x20], ecx
shr eax, 8
jmp 0x51686f
mov ecx, dword [esp + 0xc]
mov edx, 0x27
push 0x53d870
call fcn.00532d00
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], 0
mov edx, 0x210
jmp 0x51531a
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x14], ecx
jae 0x51683d
mov eax, dword [esp + 0x14]
inc eax
je 0x516875
cmp eax, 0x10000000
jae 0x516875
mov cl, 2
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 1
mov eax, esi
mov dword [esp + 0x20], ecx
jmp 0x516883
cmp eax, 0x10000000
jae 0x516875
mov cl, 0x15
mov dword [esp + 0x14], eax
mov dword [esp + 8], eax
mov dword [esp + 0x10], 1
mov dword [esp + 0x30], esi
mov dword [esp + 0xc], esi
mov dword [esp + 0xbc], ecx
mov cl, 0xe
mov dword [esp + 0x20], ecx
mov ecx, esi
mov ecx, esi
mov dword [esp + 0x18], eax
jmp 0x5168ac
mov cl, 8
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], ecx
mov cl, 0x15
mov dword [esp + 0x60], 0
mov esi, eax
mov dword [esp + 0x30], eax
mov dword [esp + 8], 0
mov dword [esp + 0x18], 0
xor ebx, ebx
mov dword [esp + 0xbc], ecx
mov edx, dword [esp + 0xa4]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
shr esi, 8
add edx, dword [esp + 0x2c]
mov ecx, edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x2c], edi
shr ecx, 0x18
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0xbc]
jmp 0x514cb2