Function at 0x520d04
Capabilities:
Authenticate hmac
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffde0
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x18], eax
xor edx, edx
mov dword [ebp - 0x1c], edx
xor ecx, ecx
mov dword [ebp - 0x20], ecx
xor ecx, ecx
mov eax, dword [ebp - 4]
mov edx, dword [eax]
xor eax, eax
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], eax
xor eax, eax
mov edx, dword [ebp - 8]
mov esi, dword [edx]
xor edx, edx
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x64], edx
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x74], ecx
xor eax, eax
mov dword [ebp - 0x78], eax
test byte [ebp - 0x47], 8
setne dl
and edx, 1
mov dword [ebp - 0x80], edx
mov edx, 0xfffffffe
test byte [ebp - 0x47], 2
setne cl
and ecx, 1
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
xor eax, 1
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edx
test byte [ebp - 0x48], 1
je 0x520302
mov eax, pe_nt_image_headers32
jmp 0x520304
xor eax, eax
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp + 8]
test eax, eax
movzx edi, byte [edx]
je 0x5203b1
mov edx, dword [ebx + 0x10]
add edx, 0x1000
cmp esi, edx
jbe 0x520333
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x34
jmp 0x524174
mov eax, dword [ebp - 0x54]
cmp esi, eax
jae 0x52033d
mov esi, dword [ebp - 0x54]
mov eax, dword [ebp + 8]
mov edx, 0x7fffffeb
mov ecx, dword [eax]
mov eax, esi
sub edx, ecx
mov ecx, dword [ebp - 0x54]
sub eax, ecx
cmp edx, eax
jge 0x520362
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x14
jmp 0x524174
mov eax, esi
mov edx, dword [ebp - 0x54]
sub eax, edx
mov ecx, dword [ebp + 8]
add dword [ecx], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x5203a9
mov edx, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x58]
cmp edx, ecx
jbe 0x5203ac
mov eax, esi
mov edx, dword [ebp - 0x70]
sub eax, edx
push eax
mov ecx, dword [ebp - 0x70]
push ecx
mov eax, dword [ebp - 0x58]
push eax
call sub.MSVCRT.DLL_memmove
mov edx, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x58]
sub edx, ecx
add esp, 0xc
mov eax, dword [ebp - 0x58]
sub esi, edx
mov dword [ebp - 0x70], eax
jmp 0x5203ac
mov esi, dword [ebp - 0x58]
mov dword [ebp - 0x54], esi
jmp 0x5203ce
mov eax, dword [ebx + 0x10]
add eax, 0x1000
mov edx, dword [ebx + 0x20]
cmp eax, edx
jae 0x5203ce
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x34
jmp 0x524174
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x520436
test edi, edi
je 0x520436
cmp edi, 0x5c
jne 0x5203f6
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x45
jne 0x5203f6
xor eax, eax
mov dword [ebp - 0x60], eax
inc dword [ebp - 0x68]
jmp 0x52416c
mov edx, dword [ebp - 0x74]
test edx, edx
je 0x520416
mov ecx, dword [ebp + 8]
test ecx, ecx
jne 0x520411
mov ecx, ebx
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x74]
call fcn.0051f6d0
xor eax, eax
mov dword [ebp - 0x74], eax
test byte [ebp - 0x47], 0x40
je 0x524035
mov dword [ebp - 0x74], esi
mov ecx, ebx
mov edx, dword [ebp - 0x68]
mov eax, esi
call fcn.0051f6a4
mov esi, eax
jmp 0x524035
cmp edi, 0x2a
je 0x52045b
cmp edi, 0x2b
je 0x52045b
cmp edi, 0x3f
je 0x52045b
cmp edi, 0x7b
jne 0x520457
mov eax, dword [ebp - 0x68]
inc eax
call fcn.0051e8bc
test eax, eax
jne 0x52045b
xor edx, edx
jmp 0x520460
mov edx, 1
mov dword [ebp - 0xa0], edx
mov ecx, dword [ebp - 0xa0]
test ecx, ecx
jne 0x52049b
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x52049b
mov edx, dword [ebp - 0x4c]
add dword [ebp - 0x4c], 0xffffffff
test edx, edx
jg 0x52049b
mov ecx, dword [ebp + 8]
test ecx, ecx
jne 0x520496
mov ecx, ebx
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x74]
call fcn.0051f6d0
xor eax, eax
mov dword [ebp - 0x74], eax
test byte [ebp - 0x48], 8
je 0x520556
mov edx, dword [ebx + 0xc]
test byte [edx + edi], 1
jne 0x52416c
cmp edi, 0x23
jne 0x520556
jmp 0x520537
mov ecx, dword [ebx + 0x50]
test ecx, ecx
je 0x5204f3
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebp - 0x68]
cmp eax, edx
jbe 0x5204e8
lea ecx, [ebx + 0x54]
push ecx
mov eax, dword [ebp - 0x80]
push eax
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x50]
mov eax, dword [ebp - 0x68]
call fcn.0052ecf4
test eax, eax
jne 0x5204ec
xor edx, edx
jmp 0x52052a
mov edx, 1
jmp 0x52052a
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x54]
sub ecx, eax
mov edx, dword [ebp - 0x68]
cmp ecx, edx
jb 0x520521
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
mov dl, byte [ebx + 0x58]
cmp al, dl
jne 0x520521
mov ecx, dword [ebx + 0x54]
dec ecx
je 0x520525
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
mov cl, byte [ebx + 0x59]
cmp dl, cl
je 0x520525
xor edx, edx
jmp 0x52052a
mov edx, 1
test edx, edx
je 0x520537
mov eax, dword [ebx + 0x54]
dec eax
add dword [ebp - 0x68], eax
jmp 0x520547
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
test al, al
jne 0x5204bd
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
test cl, cl
jne 0x52416c
xor edi, edi
test byte [ebp - 0x47], 0x40
je 0x520577
mov eax, dword [ebp - 0xa0]
test eax, eax
jne 0x520577
mov dword [ebp - 0x74], esi
mov ecx, ebx
mov edx, dword [ebp - 0x68]
mov eax, esi
call fcn.0051f6a4
mov esi, eax
mov edx, edi
cmp edx, 0x3f
jg 0x5205c5
je 0x521ca4
cmp edx, 0x29
jg 0x5205a7
je 0x5205fd
sub edx, 1
jb 0x5205fd
sub edx, 0x23
je 0x52067d
sub edx, 4
je 0x5229c8
jmp 0x524035
sub edx, 0x2a
je 0x521c86
dec edx
je 0x521c94
sub edx, 3
je 0x52068b
jmp 0x524035
cmp edx, 0x5e
jg 0x5205ec
je 0x52065a
sub edx, 0x5b
je 0x5206d5
dec edx
je 0x523cbe
dec edx
je 0x5206bd
jmp 0x524035
sub edx, 0x7b
je 0x521c53
dec edx
je 0x5205fd
jmp 0x524035
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x2c]
mov dword [ecx], eax
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp - 0x30]
mov dword [edx], ecx
mov eax, dword [ebp - 8]
mov dword [eax], esi
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x68]
mov dword [edx], ecx
mov eax, dword [ebp + 8]
test eax, eax
je 0x520650
mov edx, dword [ebp + 8]
mov ecx, 0x7fffffeb
mov eax, dword [edx]
mov edx, esi
sub ecx, eax
mov eax, dword [ebp - 0x54]
sub edx, eax
cmp ecx, edx
jge 0x520646
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x14
jmp 0x524174
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x54]
sub esi, ecx
add dword [eax], esi
mov eax, 1
jmp 0x52417e
test byte [ebp - 0x48], 2
je 0x52066f
mov edx, dword [ebp - 0x2c]
cmp edx, 0xfffffffe
jne 0x52066f
mov dword [ebp - 0x2c], 0xffffffff
xor ecx, ecx
mov dword [ebp - 0x70], ecx
mov byte [esi], 0x1a
inc esi
jmp 0x52416c
xor eax, eax
mov dword [ebp - 0x70], eax
mov byte [esi], 0x1b
inc esi
jmp 0x52416c
mov edx, dword [ebp - 0x2c]
cmp edx, 0xfffffffe
jne 0x52069a
mov dword [ebp - 0x2c], 0xffffffff
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x70], esi
test byte [ebp - 0x48], 4
je 0x5206b3
mov dl, 0xd
jmp 0x5206b5
mov dl, 0xc
mov byte [esi], dl
inc esi
jmp 0x52416c
test byte [ebx + 0x43], 2
je 0x524035
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x40
jmp 0x524174
mov dword [ebp - 0x70], esi
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x3a
je 0x5206f8
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x2e
je 0x5206f8
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x3d
jne 0x520727
lea edx, [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
call fcn.0051f55c
test eax, eax
je 0x520727
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x3a
jne 0x520718
mov edx, 0xd
jmp 0x52071d
mov edx, 0x1f
mov eax, dword [ebp + 0x1c]
mov dword [eax], edx
jmp 0x524174
xor ecx, ecx
mov dword [ebp - 0x94], ecx
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
movzx edi, byte [eax]
cmp edi, 0x5c
jne 0x52076b
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x45
jne 0x52074d
inc dword [ebp - 0x68]
jmp 0x52072f
push 3
push 0x557171
mov ecx, dword [ebp - 0x68]
inc ecx
push ecx
call sub.MSVCRT.DLL_strncmp
add esp, 0xc
test eax, eax
jne 0x520786
add dword [ebp - 0x68], 3
jmp 0x52072f
mov eax, dword [ebp - 0x94]
test eax, eax
jne 0x520786
cmp edi, 0x5e
jne 0x520786
mov dword [ebp - 0x94], 1
jmp 0x52072f
cmp edi, 0x5d
jne 0x5207be
test byte [ebx + 0x43], 2
je 0x5207be
mov edx, dword [ebp - 0x94]
test edx, edx
je 0x52079f
mov cl, 0xd
jmp 0x5207a1
mov cl, 0x6d
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x2c]
cmp eax, 0xfffffffe
jne 0x5207b3
mov dword [ebp - 0x2c], 0xffffffff
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], edx
jmp 0x52416c
xor eax, eax
xor edx, edx
mov dword [ebp - 0x98], eax
mov dword [ebp - 0xac], edx
mov dword [ebp - 0xb0], 0xffffffff
push 0x20
lea ecx, [ebp - 0x1fc]
push 0
push ecx
call sub.MSVCRT.DLL_memset
xor eax, eax
lea edx, [esi + 4]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x84], edx
mov ecx, dword [ebp - 0x84]
add esp, 0xc
test edi, edi
mov dword [ebp - 0x88], ecx
je 0x521a40
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x5208d7
cmp edi, 0x7f
jle 0x5208d7
mov edx, dword [ebp - 0x68]
movzx edi, byte [edx]
cmp edi, 0xc0
jl 0x5208d7
mov eax, edi
and eax, 0x3f
xor edx, edx
mov dl, byte [eax + 0x557648]
mov dword [ebp - 0xe4], edx
mov ecx, dword [ebp - 0xe4]
add ecx, ecx
lea ecx, [ecx + ecx*2]
mov dword [ebp - 0xe8], ecx
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe4]
mov edx, dword [eax*4 + 0x55728c]
and edi, edx
shl edi, cl
mov dword [ebp - 0xe0], 1
mov eax, dword [ebp - 0x68]
lea edx, [eax + 1]
mov dword [ebp - 0x1d8], edx
mov ecx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0xe4]
cmp ecx, eax
jg 0x5208ce
sub dword [ebp - 0xe8], 6
mov ecx, dword [ebp - 0xe8]
mov edx, dword [ebp - 0x1d8]
xor eax, eax
mov al, byte [edx]
and eax, 0x3f
shl eax, cl
or edi, eax
inc dword [ebp - 0xe0]
inc dword [ebp - 0x1d8]
mov edx, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xe4]
cmp edx, ecx
jle 0x520894
mov eax, dword [ebp - 0xe4]
add dword [ebp - 0x68], eax
mov edx, dword [ebp + 8]
test edx, edx
je 0x5208fd
mov ecx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x88]
sub ecx, eax
mov edx, dword [ebp + 8]
add dword [edx], ecx
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x84], ecx
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x520929
cmp edi, 0x5c
jne 0x52145b
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x45
jne 0x52145b
xor eax, eax
mov dword [ebp - 0x60], eax
inc dword [ebp - 0x68]
jmp 0x521a1f
cmp edi, 0x5b
jne 0x520bd1
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x3a
je 0x520956
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x2e
je 0x520956
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x3d
jne 0x520bd1
lea edx, [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
call fcn.0051f55c
test eax, eax
je 0x520bd1
xor edx, edx
mov dword [ebp - 0xec], edx
mov ecx, dword [ebx + 8]
mov dword [ebp - 0xfc], ecx
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x3a
je 0x520993
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x1f
jmp 0x524174
add dword [ebp - 0x68], 2
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x5e
jne 0x5209b8
mov dword [ebp - 0xec], 1
mov dword [ebp - 0x98], 1
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, eax
mov eax, dword [ebp - 0x68]
call fcn.0051f5a0
mov dword [ebp - 0xf0], eax
mov edx, dword [ebp - 0xf0]
test edx, edx
jge 0x5209e6
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x1e
jmp 0x524174
test byte [ebp - 0x48], 1
je 0x5209ff
mov eax, dword [ebp - 0xf0]
cmp eax, 2
jg 0x5209ff
xor edx, edx
mov dword [ebp - 0xf0], edx
mov ecx, dword [ebp - 0xf0]
lea ecx, [ecx + ecx*2]
mov dword [ebp - 0xf0], ecx
push 0x20
mov eax, dword [ebp - 0xf0]
mov edx, dword [eax*4 + 0x556618]
mov ecx, dword [ebp - 0xfc]
add edx, ecx
push edx
lea eax, [ebp - 0x21c]
push eax
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov edx, dword [ebp - 0xf0]
mov ecx, dword [edx*4 + 0x55661c]
mov dword [ebp - 0xf4], ecx
mov eax, dword [ebp - 0xf0]
mov edx, dword [eax*4 + 0x556620]
mov dword [ebp - 0xf8], edx
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
jl 0x520b01
mov eax, dword [ebp - 0xf8]
test eax, eax
jl 0x520aba
xor edi, edi
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x1dc], eax
mov edx, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0xf4]
lea eax, [edx + ecx]
mov dword [ebp - 0x1d8], eax
mov edx, dword [ebp - 0x1d8]
mov eax, dword [ebp - 0x1dc]
inc edi
mov cl, byte [edx]
or byte [eax], cl
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x520a96
jmp 0x520b01
xor edi, edi
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x1d8], eax
mov edx, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0xf4]
lea eax, [edx + ecx]
mov dword [ebp - 0x1dc], eax
mov edx, dword [ebp - 0x1dc]
mov eax, dword [ebp - 0x1d8]
inc edi
mov cl, byte [edx]
not cl
and byte [eax], cl
inc dword [ebp - 0x1d8]
inc dword [ebp - 0x1dc]
cmp edi, 0x20
jl 0x520add
mov edx, dword [ebp - 0xf8]
test edx, edx
jge 0x520b11
neg dword [ebp - 0xf8]
mov ecx, dword [ebp - 0xf8]
dec ecx
jne 0x520b23
and byte [ebp - 0x21b], 0xc3
jmp 0x520b35
mov eax, dword [ebp - 0xf8]
cmp eax, 2
jne 0x520b35
and byte [ebp - 0x211], 0x7f
mov edx, dword [ebp - 0xec]
test edx, edx
je 0x520b7f
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1dc], eax
lea edx, [ebp - 0x21c]
mov dword [ebp - 0x1d8], edx
mov ecx, dword [ebp - 0x1d8]
mov edx, dword [ebp - 0x1dc]
inc edi
mov al, byte [ecx]
not al
or byte [edx], al
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x520b59
jmp 0x520bbb
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
lea edx, [ebp - 0x21c]
mov dword [ebp - 0x1dc], edx
mov ecx, dword [ebp - 0x1dc]
mov edx, dword [ebp - 0x1d8]
inc edi
mov al, byte [ecx]
or byte [edx], al
inc dword [ebp - 0x1d8]
inc dword [ebp - 0x1dc]
cmp edi, 0x20
jl 0x520b99
mov ecx, dword [ebp - 0x6c]
inc ecx
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0xac], 0xa
jmp 0x521a1f
cmp edi, 0x5c
jne 0x52145b
mov eax, dword [ebp - 0x48]
push eax
push 1
lea eax, [ebp - 0x68]
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebp + 0x1c]
call fcn.0051e3b8
mov edi, eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
test edx, edx
jne 0x524174
mov ecx, edi
neg ecx
cmp ecx, 5
jne 0x520c0d
mov edi, 8
jmp 0x520c6e
mov eax, edi
neg eax
cmp eax, 0x16
jne 0x520c1d
mov edi, 0x58
jmp 0x520c6e
mov eax, edi
neg eax
cmp eax, 0x11
jne 0x520c2d
mov edi, 0x52
jmp 0x520c6e
mov eax, edi
neg eax
cmp eax, 0x1a
jne 0x520c61
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x5c
jne 0x520c55
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 2]
cmp dl, 0x45
jne 0x520c55
add dword [ebp - 0x68], 2
jmp 0x521a1f
mov dword [ebp - 0x60], 1
jmp 0x521a1f
mov ecx, edi
neg ecx
cmp ecx, 0x19
je 0x521a1f
test edi, edi
jge 0x52145b
mov eax, dword [ebx + 8]
mov dword [ebp - 0x100], eax
add dword [ebp - 0xac], 2
mov edx, dword [ebp + 8]
test edx, edx
jne 0x520e8e
mov ecx, edi
neg ecx
add ecx, 0xfffffffa
cmp ecx, 5
ja case.default.0x520ca1
jmp dword [ecx*4 + 0x520ca8]
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1dc], eax
mov edx, dword [ebp - 0x100]
lea ecx, [edx + 0x40]
mov dword [ebp - 0x1d8], ecx
mov eax, dword [ebp - 0x1d8]
mov ecx, dword [ebp - 0x1dc]
inc edi
mov dl, byte [eax]
or byte [ecx], dl
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x520cdd
jmp 0x521a1f
mov dword [ebp - 0x98], 1
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
mov edx, dword [ebp - 0x100]
lea ecx, [edx + 0x40]
mov dword [ebp - 0x1dc], ecx
mov eax, dword [ebp - 0x1dc]
mov ecx, dword [ebp - 0x1d8]
inc edi
mov dl, byte [eax]
not dl
or byte [ecx], dl
inc dword [ebp - 0x1d8]
inc dword [ebp - 0x1dc]
cmp edi, 0x20
jl 0x520d2b
jmp 0x521a1f
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1dc], eax
mov edx, dword [ebp - 0x100]
lea ecx, [edx + 0xa0]
mov dword [ebp - 0x1d8], ecx
mov eax, dword [ebp - 0x1d8]
mov ecx, dword [ebp - 0x1dc]
inc edi
mov dl, byte [eax]
or byte [ecx], dl
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x520d74
jmp 0x521a1f
mov dword [ebp - 0x98], 1
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
mov edx, dword [ebp - 0x100]
lea ecx, [edx + 0xa0]
mov dword [ebp - 0x1dc], ecx
mov eax, dword [ebp - 0x1dc]
mov ecx, dword [ebp - 0x1d8]
inc edi
mov dl, byte [eax]
not dl
or byte [ecx], dl
inc dword [ebp - 0x1d8]
inc dword [ebp - 0x1dc]
cmp edi, 0x20
jl 0x520dc5
jmp 0x521a1f
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1dc], eax
mov edx, dword [ebp - 0x100]
mov ecx, edx
mov dword [ebp - 0x1d8], ecx
mov eax, dword [ebp - 0x1d8]
mov ecx, dword [ebp - 0x1dc]
inc edi
mov dl, byte [eax]
or byte [ecx], dl
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x520e0a
and byte [ebp - 0x1fb], 0xf7
jmp 0x521a1f
mov dword [ebp - 0x98], 1
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
mov edx, dword [ebp - 0x100]
mov ecx, edx
mov dword [ebp - 0x1dc], ecx
mov eax, dword [ebp - 0x1dc]
mov ecx, dword [ebp - 0x1d8]
inc edi
mov dl, byte [eax]
not dl
or byte [ecx], dl
inc dword [ebp - 0x1d8]
inc dword [ebp - 0x1dc]
cmp edi, 0x20
jl 0x520e5e
or byte [ebp - 0x1fb], 8
jmp 0x521a1f
cmp edi, 0xfffffff9
je 0x521a1f
cmp edi, 0xfffffffa
je 0x521a1f
cmp edi, 0xfffffff5
je 0x521a1f
cmp edi, 0xfffffff6
je 0x521a1f
cmp edi, 0xfffffff7
je 0x521a1f
cmp edi, 0xfffffff8
je 0x521a1f
mov eax, edi
neg eax
cmp eax, 0x13
jne 0x520ff1
or byte [ebp - 0x1fb], 2
or byte [ebp - 0x1f8], 1
or byte [ebp - 0x1e8], 1
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x521a1f
mov dword [ebp - 0x7c], 1
mov ecx, dword [ebp - 0x84]
mov eax, 0x1680
mov byte [ecx], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x180e
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2000
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x200a
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x202f
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x205f
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x3000
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov ecx, edi
neg ecx
cmp ecx, 0x12
jne 0x52120e
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
mov dword [ebp - 0x104], 0xff
mov edx, edi
dec edx
je 0x521027
sub edx, 3
je 0x521030
sub edx, 0x10
je 0x521039
jmp 0x521040
xor dword [ebp - 0x104], 2
jmp 0x521040
xor dword [ebp - 0x104], 1
jmp 0x521040
xor dword [ebp - 0x104], 1
mov cl, byte [ebp - 0x104]
mov eax, dword [ebp - 0x1d8]
or byte [eax], cl
inc edi
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x52100c
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x521a1f
mov dword [ebp - 0x7c], 1
mov ecx, dword [ebp - 0x84]
mov eax, pe_nt_image_headers32
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x167f
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x1681
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x180d
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x180f
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x1fff
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x200b
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x202e
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2030
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x205e
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2060
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2fff
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x3001
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x7fffffff
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov ecx, edi
neg ecx
cmp ecx, 0x15
jne 0x52128c
or byte [ebp - 0x1fb], 4
or byte [ebp - 0x1fb], 8
or byte [ebp - 0x1fb], 0x10
or byte [ebp - 0x1fb], 0x20
or byte [ebp - 0x1ec], 0x20
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x521a1f
mov dword [ebp - 0x7c], 1
mov edx, dword [ebp - 0x84]
mov eax, 0x2028
mov byte [edx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2029
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov ecx, edi
neg ecx
cmp ecx, 0x14
jne 0x521389
xor edi, edi
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], eax
mov dword [ebp - 0x108], 0xff
mov edx, edi
dec edx
je 0x5212bd
sub edx, 0xf
je 0x5212db
jmp 0x5212e2
xor dword [ebp - 0x108], 4
xor dword [ebp - 0x108], 8
xor dword [ebp - 0x108], 0x10
xor dword [ebp - 0x108], 0x20
jmp 0x5212e2
xor dword [ebp - 0x108], 0x20
mov cl, byte [ebp - 0x108]
mov eax, dword [ebp - 0x1d8]
or byte [eax], cl
inc edi
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x5212a7
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x521a1f
mov dword [ebp - 0x7c], 1
mov ecx, dword [ebp - 0x84]
mov eax, pe_nt_image_headers32
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2027
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x2029
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov eax, 0x7fffffff
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov ecx, edi
neg ecx
cmp ecx, 0x10
je 0x52139f
mov eax, edi
neg eax
cmp eax, 0xf
jne 0x52142f
mov edx, dword [ebp + 0x1c]
lea ecx, [ebp - 0x110]
push edx
lea edx, [ebp - 0x10c]
lea eax, [ebp - 0x68]
call fcn.0051e794
mov dword [ebp - 0x114], eax
mov ecx, dword [ebp - 0x114]
test ecx, ecx
jl 0x524174
mov dword [ebp - 0x7c], 1
neg edi
cmp edi, 0x10
sete al
and eax, 1
mov edx, dword [ebp - 0x10c]
cmp eax, edx
je 0x5213eb
mov cl, 3
jmp 0x5213ed
mov cl, 4
mov eax, dword [ebp - 0x84]
mov byte [eax], cl
inc dword [ebp - 0x84]
mov dl, byte [ebp - 0x114]
mov eax, dword [ebp - 0x84]
mov byte [eax], dl
inc dword [ebp - 0x84]
mov dl, byte [ebp - 0x110]
mov ecx, dword [ebp - 0x84]
mov byte [ecx], dl
inc dword [ebp - 0x84]
sub dword [ebp - 0xac], 2
jmp 0x521a1f
test byte [ebp - 0x48], 0x40
je 0x521443
mov eax, dword [ebp + 0x1c]
mov dword [eax], 7
jmp 0x524174
sub dword [ebp - 0xac], 2
mov edx, dword [ebp - 0x68]
movzx edi, byte [edx]
jmp 0x52145b
xor eax, eax
mov dword [ebp - 0x60], eax
add dword [ebp - 0x68], 2
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x5c
jne 0x521471
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 2]
cmp dl, 0x45
je 0x521452
mov ecx, dword [ebp - 0x68]
cmp edi, 0xd
mov dword [ebp - 0xdc], ecx
je 0x521484
cmp edi, 0xa
jne 0x521488
or dword [ebx + 0x44], 0x20
mov eax, dword [ebp - 0x60]
test eax, eax
jne 0x521908
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x2d
jne 0x521908
add dword [ebp - 0x68], 2
jmp 0x5214ac
add dword [ebp - 0x68], 2
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x5c
jne 0x5214ea
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x45
je 0x5214a8
jmp 0x5214ea
add dword [ebp - 0x68], 2
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x5c
jne 0x5214e1
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x45
jne 0x5214e1
add dword [ebp - 0x68], 2
jmp 0x5214ea
mov dword [ebp - 0x60], 1
jmp 0x5214fe
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x5c
jne 0x5214fe
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x51
je 0x5214c2
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
test dl, dl
je 0x521518
mov ecx, dword [ebp - 0x60]
test ecx, ecx
jne 0x521526
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x5d
jne 0x521526
mov ecx, dword [ebp - 0xdc]
mov dword [ebp - 0x68], ecx
jmp 0x521908
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x5215fa
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
mov dword [ebp - 0x118], ecx
mov eax, dword [ebp - 0x118]
cmp eax, 0xc0
jl 0x521607
mov edx, dword [ebp - 0x118]
and edx, 0x3f
xor ecx, ecx
mov cl, byte [edx + 0x557648]
mov dword [ebp - 0x120], ecx
mov eax, dword [ebp - 0x120]
add eax, eax
lea eax, [eax + eax*2]
mov dword [ebp - 0x124], eax
mov ecx, dword [ebp - 0x124]
mov edx, dword [ebp - 0x120]
mov eax, dword [edx*4 + 0x55728c]
mov edx, dword [ebp - 0x118]
and eax, edx
shl eax, cl
mov dword [ebp - 0x118], eax
mov dword [ebp - 0x11c], 1
mov ecx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x120]
cmp ecx, eax
jg 0x5215ef
sub dword [ebp - 0x124], 6
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x124]
movzx edx, byte [edx + eax]
and edx, 0x3f
shl edx, cl
or dword [ebp - 0x118], edx
inc dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x120]
cmp ecx, eax
jle 0x5215b4
mov edx, dword [ebp - 0x120]
add dword [ebp - 0x68], edx
jmp 0x521607
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
mov dword [ebp - 0x118], eax
mov edx, dword [ebp - 0x60]
test edx, edx
jne 0x5216a5
mov ecx, dword [ebp - 0x118]
cmp ecx, 0x5c
jne 0x5216a5
mov eax, dword [ebp - 0x48]
push eax
push 1
lea eax, [ebp - 0x68]
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebp + 0x1c]
call fcn.0051e3b8
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
test edx, edx
jne 0x524174
mov ecx, dword [ebp - 0x118]
test ecx, ecx
jge 0x5216a5
mov eax, dword [ebp - 0x118]
cmp eax, 0xfffffffb
jne 0x521669
mov dword [ebp - 0x118], 8
jmp 0x5216a5
mov edx, dword [ebp - 0x118]
cmp edx, 0xffffffea
jne 0x521680
mov dword [ebp - 0x118], 0x58
jmp 0x5216a5
mov ecx, dword [ebp - 0x118]
cmp ecx, 0xffffffef
jne 0x521697
mov dword [ebp - 0x118], 0x52
jmp 0x5216a5
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0x68], eax
jmp 0x521908
mov edx, dword [ebp - 0x118]
cmp edi, edx
jle 0x5216bd
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 8
jmp 0x524174
mov eax, dword [ebp - 0x118]
cmp edi, eax
je 0x521908
mov edx, dword [ebp - 0x118]
cmp edx, 0xd
je 0x5216e1
mov ecx, dword [ebp - 0x118]
cmp ecx, 0xa
jne 0x5216e5
or dword [ebx + 0x44], 0x20
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x521870
mov edx, dword [ebp - 0x118]
cmp edx, 0xff
jg 0x521717
test byte [ebp - 0x48], 1
je 0x521870
mov ecx, dword [ebp - 0x118]
cmp ecx, 0x7f
jle 0x521870
mov dword [ebp - 0x7c], 1
test byte [ebp - 0x48], 1
je 0x521832
mov dword [ebp - 0x130], edi
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x134], eax
jmp 0x52180c
mov edx, dword [ebp - 0x128]
cmp edx, edi
jb 0x52175d
mov ecx, dword [ebp - 0x12c]
mov eax, dword [ebp - 0x118]
cmp ecx, eax
jbe 0x52180c
mov edx, dword [ebp - 0x128]
cmp edi, edx
jbe 0x52177f
mov ecx, edi
dec ecx
mov eax, dword [ebp - 0x12c]
cmp ecx, eax
ja 0x52177f
mov edi, dword [ebp - 0x128]
jmp 0x52180c
mov eax, dword [ebp - 0x118]
mov edx, dword [ebp - 0x12c]
cmp eax, edx
jae 0x5217ae
mov ecx, dword [ebp - 0x118]
inc ecx
mov eax, dword [ebp - 0x128]
cmp ecx, eax
jb 0x5217ae
mov edx, dword [ebp - 0x12c]
mov dword [ebp - 0x118], edx
jmp 0x52180c
mov ecx, dword [ebp - 0x128]
mov eax, dword [ebp - 0x12c]
cmp ecx, eax
jne 0x5217cf
mov edx, dword [ebp - 0x84]
mov byte [edx], 1
inc dword [ebp - 0x84]
jmp 0x5217f5
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 2
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x128]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x12c]
call fcn.0052efe4
add dword [ebp - 0x84], eax
lea ecx, [ebp - 0x12c]
lea eax, [ebp - 0x130]
push ecx
lea ecx, [ebp - 0x128]
mov edx, dword [ebp - 0x134]
call fcn.0051f6f8
test eax, eax
jne 0x52173f
mov eax, dword [ebp - 0x84]
mov byte [eax], 2
mov eax, edi
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x118]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov edx, dword [ebp - 0x118]
sub edx, edi
inc edx
add dword [ebp - 0xac], edx
mov ecx, dword [ebp - 0x118]
mov dword [ebp - 0xb0], ecx
mov eax, dword [ebp + 8]
test eax, eax
jne 0x521a1f
mov edx, dword [ebp - 0x118]
cmp edi, edx
jg 0x521a1f
mov ecx, edi
mov al, 1
and ecx, 7
mov edx, edi
shl al, cl
test edx, edx
jns 0x5218b6
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x1fc], al
test byte [ebp - 0x48], 1
je 0x5218f8
mov ecx, dword [ebx + 4]
xor eax, eax
mov dl, 1
mov al, byte [ecx + edi]
mov dword [ebp - 0x138], eax
mov ecx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x138]
and ecx, 7
shl dl, cl
test eax, eax
jns 0x5218ee
add eax, 7
sar eax, 3
or byte [ebp + eax - 0x1fc], dl
inc edi
mov edx, dword [ebp - 0x118]
cmp edi, edx
jle 0x5218a4
jmp 0x521a1f
mov ecx, dword [ebp - 0x80]
test ecx, ecx
je 0x5219cb
cmp edi, 0xff
jg 0x52192e
test byte [ebp - 0x48], 1
je 0x5219cb
cmp edi, 0x7f
jle 0x5219cb
mov dword [ebp - 0x7c], 1
mov eax, dword [ebp - 0x84]
mov byte [eax], 1
mov eax, edi
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
call fcn.0052efe4
add dword [ebp - 0x84], eax
test byte [ebp - 0x48], 1
je 0x521a1f
mov edx, edi
test edx, edx
jns 0x52196a
add edx, 0x7f
sar edx, 7
xor ecx, ecx
mov cl, byte [edx + 0x5625b4]
shl ecx, 7
mov eax, edi
and eax, 0x8000007f
jns 0x521986
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx edx, word [ecx*2 + 0x5587b4]
mov ecx, dword [edx*8 + 0x557970]
add ecx, edi
mov dword [ebp - 0x13c], ecx
cmp ecx, edi
je 0x521a1f
mov eax, dword [ebp - 0x84]
mov byte [eax], 1
inc dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x13c]
call fcn.0052efe4
add dword [ebp - 0x84], eax
jmp 0x521a1f
mov ecx, edi
mov dl, 1
and ecx, 7
mov eax, edi
shl dl, cl
test eax, eax
jns 0x5219dd
add eax, 7
sar eax, 3
or byte [ebp + eax - 0x1fc], dl
test byte [ebp - 0x48], 1
je 0x521a13
mov edx, dword [ebx + 4]
xor ecx, ecx
mov al, 1
mov cl, byte [edx + edi]
mov edi, ecx
mov ecx, edi
mov edx, edi
and ecx, 7
shl al, cl
test edx, edx
jns 0x521a09
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x1fc], al
inc dword [ebp - 0xac]
mov dword [ebp - 0xb0], edi
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
movzx edi, byte [eax]
test edi, edi
je 0x521a40
cmp edi, 0x5d
jne 0x52080d
mov eax, dword [ebp - 0x60]
test eax, eax
jne 0x52080d
test edi, edi
jne 0x521a52
mov edx, dword [ebp + 0x1c]
mov dword [edx], 6
jmp 0x524174
mov ecx, dword [ebp - 0xac]
dec ecx
jne 0x521b0c
mov eax, dword [ebp - 0x7c]
test eax, eax
jne 0x521b0c
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x521a8c
mov ecx, dword [ebp - 0x94]
test ecx, ecx
je 0x521a8c
mov eax, dword [ebp - 0xb0]
cmp eax, 0x80
jge 0x521b0c
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x34], edx
mov ecx, dword [ebp - 0x94]
test ecx, ecx
je 0x521ac3
mov eax, dword [ebp - 0x2c]
cmp eax, 0xfffffffe
jne 0x521aab
mov dword [ebp - 0x2c], 0xffffffff
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], edx
mov byte [esi], 0x1e
inc esi
mov cl, byte [ebp - 0xb0]
mov byte [esi], cl
inc esi
jmp 0x52416c
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x521af1
mov edx, dword [ebp - 0xb0]
cmp edx, 0x7f
jle 0x521af1
lea edx, [ebp - 0xd8]
mov eax, dword [ebp - 0xb0]
call fcn.0052efe4
mov dword [ebp - 0xd0], eax
jmp 0x524087
mov cl, byte [ebp - 0xb0]
mov byte [ebp - 0xd8], cl
mov dword [ebp - 0xd0], 1
jmp 0x524087
mov eax, dword [ebp - 0x2c]
cmp eax, 0xfffffffe
jne 0x521b1b
mov dword [ebp - 0x2c], 0xffffffff
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], edx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x521bd3
mov edx, dword [ebp - 0x98]
test edx, edx
jne 0x521bd3
mov ecx, dword [ebp - 0x84]
mov byte [ecx], 0
inc dword [ebp - 0x84]
mov byte [esi], 0x50
inc esi
add esi, 2
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x521b64
mov dl, 1
jmp 0x521b66
xor edx, edx
mov byte [esi], dl
mov eax, dword [ebp - 0xac]
test eax, eax
jle 0x521ba9
or byte [esi], 2
inc esi
mov ecx, dword [ebp - 0x84]
sub ecx, esi
lea eax, [esi + 0x20]
push ecx
push esi
push eax
call sub.MSVCRT.DLL_memmove
add esp, 0xc
lea edx, [ebp - 0x1fc]
push 0x20
push edx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov esi, dword [ebp - 0x84]
add esi, 0x20
jmp 0x521baf
mov esi, dword [ebp - 0x84]
mov edx, dword [ebp - 0x70]
mov eax, esi
sub eax, edx
mov ecx, dword [ebp - 0x70]
sar eax, 8
mov byte [ecx + 1], al
mov eax, esi
mov edx, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x70]
sub eax, edx
and al, 0xff
mov byte [ecx + 2], al
jmp 0x52416c
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x98]
cmp eax, edx
jne 0x521be7
mov cl, 0x4e
jmp 0x521be9
mov cl, 0x4f
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x521c39
mov edx, dword [ebp + 8]
test edx, edx
jne 0x521c4b
xor edi, edi
mov eax, esi
mov dword [ebp - 0x1dc], eax
lea edx, [ebp - 0x1fc]
mov dword [ebp - 0x1d8], edx
mov ecx, dword [ebp - 0x1d8]
mov edx, dword [ebp - 0x1dc]
inc edi
mov al, byte [ecx]
not al
mov byte [edx], al
inc dword [ebp - 0x1dc]
inc dword [ebp - 0x1d8]
cmp edi, 0x20
jl 0x521c13
jmp 0x521c4b
push 0x20
lea ecx, [ebp - 0x1fc]
push ecx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
add esi, 0x20
jmp 0x52416c
mov eax, dword [ebp - 0xa0]
test eax, eax
je 0x524035
mov edx, dword [ebp + 0x1c]
push edx
lea ecx, [ebp - 0x1c]
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 0x68]
inc eax
call fcn.0051e930
mov dword [ebp - 0x68], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx]
test eax, eax
jne 0x524174
jmp 0x521cb0
xor edx, edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x1c], 0xffffffff
jmp 0x521cb0
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x1c], 0xffffffff
jmp 0x521cb0
xor ecx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x70]
test eax, eax
jne 0x521cc5
mov edx, dword [ebp + 0x1c]
mov dword [edx], 9
jmp 0x524174
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x521cd8
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x30], edx
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
cmp ecx, eax
jne 0x521ce6
xor edx, edx
jmp 0x521ceb
mov edx, 0x200
mov dword [ebp - 0x40], edx
xor eax, eax
mov dword [ebp - 0x14], eax
xor ecx, ecx
mov dword [ebp - 0x9c], ecx
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x5c], eax
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x2b
jne 0x521d20
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x9c], 1
inc dword [ebp - 0x68]
jmp 0x521d3c
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x3f
jne 0x521d36
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x10], eax
inc dword [ebp - 0x68]
jmp 0x521d3c
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x1c
je 0x521d53
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0x1d
jne 0x521e1e
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x521db0
test byte [esi - 1], 0x80
je 0x521db0
lea edx, [esi - 1]
mov dword [ebp - 0x140], edx
jmp 0x521d71
dec dword [ebp - 0x140]
mov ecx, dword [ebp - 0x140]
xor eax, eax
mov al, byte [ecx]
and eax, 0xc0
cmp eax, 0x80
je 0x521d6b
mov edi, esi
mov eax, dword [ebp - 0x140]
sub edi, eax
push edi
mov edx, dword [ebp - 0x140]
push edx
lea ecx, [ebp - 0x90]
push ecx
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
or edi, 0x80
jmp 0x521dc7
movzx edi, byte [esi - 1]
mov eax, dword [ebp - 0x18]
dec eax
jle 0x521dc7
mov edx, dword [ebp - 0x3c]
or edx, edi
mov ecx, dword [ebx + 0x48]
or edx, ecx
mov dword [ebp - 0x30], edx
mov eax, dword [ebp - 0x9c]
test eax, eax
jne 0x521ed5
mov edx, dword [ebp - 0x1c]
test edx, edx
jge 0x521ed5
lea ecx, [ebp - 0x90]
push ecx
mov eax, dword [ebp - 0x68]
inc eax
push eax
mov edx, dword [ebp - 0x48]
push edx
push ebx
mov ecx, dword [ebp - 0x70]
xor eax, eax
mov al, byte [ecx]
mov ecx, dword [ebp - 0x80]
mov edx, edi
call fcn.0051f794
test eax, eax
je 0x521ed5
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x9c], 1
jmp 0x521ed5
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0x1e
jne 0x521e7f
mov dword [ebp - 0x14], 0xd
mov eax, dword [ebp - 0x70]
movzx edi, byte [eax + 1]
mov eax, dword [ebp - 0x9c]
test eax, eax
jne 0x521ed5
mov edx, dword [ebp - 0x1c]
test edx, edx
jge 0x521ed5
push 0
mov ecx, dword [ebp - 0x68]
inc ecx
push ecx
mov eax, dword [ebp - 0x48]
push eax
push ebx
mov ecx, dword [ebp - 0x80]
mov edx, edi
mov eax, 0x1e
call fcn.0051f794
test eax, eax
je 0x521ed5
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x9c], 1
jmp 0x521ed5
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x17
jae 0x52213e
mov dword [ebp - 0x14], 0x1a
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x9c]
test eax, eax
movzx edi, byte [edx]
jne 0x521ed5
mov edx, dword [ebp - 0x1c]
test edx, edx
jge 0x521ed5
push 0
mov ecx, dword [ebp - 0x68]
inc ecx
push ecx
mov eax, dword [ebp - 0x48]
push eax
push ebx
mov ecx, dword [ebp - 0x80]
xor edx, edx
mov eax, edi
call fcn.0051f794
test eax, eax
je 0x521ed5
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x9c], 1
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x10
je 0x521ee8
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0xf
jne 0x521f06
mov eax, dword [ebp - 0x70]
xor edx, edx
mov dl, byte [eax + 1]
mov dword [ebp - 0x148], edx
mov ecx, dword [ebp - 0x70]
xor eax, eax
mov al, byte [ecx + 2]
mov dword [ebp - 0x14c], eax
jmp 0x521f15
or edx, 0xffffffff
mov dword [ebp - 0x14c], edx
mov dword [ebp - 0x148], edx
mov dword [ebp - 0x144], esi
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x5229b8
mov edx, dword [ebp - 0x1c]
dec edx
je 0x521f33
or dword [ebx + 0x44], 1
mov ecx, dword [ebp - 0x14]
add dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x521f8a
mov edx, dword [ebp - 0x1c]
inc edx
jne 0x521f54
mov cl, byte [ebp - 0x10]
add cl, 0x1f
mov byte [esi], cl
inc esi
jmp 0x5220e8
mov eax, dword [ebp - 0x1c]
dec eax
jne 0x521f68
mov dl, byte [ebp - 0x10]
add dl, 0x23
mov byte [esi], dl
inc esi
jmp 0x5220e8
mov cl, byte [ebp - 0x10]
add cl, 0x25
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x1c]
sar eax, 8
mov byte [esi], al
mov dl, byte [ebp - 0x1c]
and dl, 0xff
mov byte [esi + 1], dl
add esi, 2
jmp 0x5220e8
mov ecx, dword [ebp - 0x18]
dec ecx
jne 0x521fd8
mov eax, dword [ebp - 0x1c]
inc eax
jne 0x521fa4
mov dl, byte [ebp - 0x10]
add dl, 0x21
mov byte [esi], dl
inc esi
jmp 0x5220e8
mov esi, dword [ebp - 0x144]
mov eax, dword [ebp - 0x1c]
dec eax
je 0x5229b8
mov dl, byte [ebp - 0x10]
add dl, 0x25
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0x1c]
dec ecx
sar ecx, 8
mov byte [esi], cl
mov al, byte [ebp - 0x1c]
add al, 0xff
and al, 0xff
mov byte [esi + 1], al
add esi, 2
jmp 0x5220e8
mov dl, byte [ebp - 0x14]
add dl, 0x27
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0x18]
sar ecx, 8
mov byte [esi], cl
mov al, byte [ebp - 0x18]
and al, 0xff
mov byte [esi + 1], al
add esi, 2
mov edx, dword [ebp - 0x1c]
test edx, edx
jge 0x522058
mov ecx, dword [ebp - 0x80]
test ecx, ecx
je 0x522029
cmp edi, 0x80
jl 0x522029
mov eax, edi
lea edx, [ebp - 0x90]
and eax, 7
push eax
push edx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov ecx, edi
and ecx, 7
add esi, ecx
jmp 0x52204a
mov eax, edi
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x148]
test edx, edx
jl 0x52204a
mov cl, byte [ebp - 0x148]
mov byte [esi], cl
inc esi
mov al, byte [ebp - 0x14c]
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0x10]
add dl, 0x1f
mov byte [esi], dl
inc esi
jmp 0x5220e8
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
cmp ecx, eax
je 0x5220e8
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x522094
cmp edi, 0x80
jl 0x522094
mov ecx, edi
lea eax, [ebp - 0x90]
and ecx, 7
push ecx
push eax
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov edx, edi
and edx, 7
add esi, edx
jmp 0x522099
mov ecx, edi
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x148]
test eax, eax
jl 0x5220b5
mov dl, byte [ebp - 0x148]
mov byte [esi], dl
inc esi
mov cl, byte [ebp - 0x14c]
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x18]
sub dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
dec edx
jne 0x5220cc
mov cl, byte [ebp - 0x10]
add cl, 0x23
mov byte [esi], cl
inc esi
jmp 0x5220e8
mov al, byte [ebp - 0x10]
add al, 0x25
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x1c]
sar edx, 8
mov byte [esi], dl
mov cl, byte [ebp - 0x1c]
and cl, 0xff
mov byte [esi + 1], cl
add esi, 2
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x522114
cmp edi, 0x80
jl 0x522114
mov edx, edi
lea ecx, [ebp - 0x90]
and edx, 7
push edx
push ecx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
and edi, 7
add esi, edi
jmp 0x522119
mov eax, edi
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x148]
test edx, edx
jl 0x5227e3
mov cl, byte [ebp - 0x148]
mov byte [esi], cl
inc esi
mov al, byte [ebp - 0x14c]
mov byte [esi], al
inc esi
jmp 0x5227e3
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0x4e
je 0x522169
mov eax, dword [ebp - 0x70]
mov dl, byte [eax]
cmp dl, 0x4f
je 0x522169
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x50
je 0x522169
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0x51
jne 0x52220f
mov eax, dword [ebp - 0x1c]
test eax, eax
jne 0x522178
mov esi, dword [ebp - 0x70]
jmp 0x5229b8
mov eax, dword [ebp - 0x1c]
dec eax
je 0x522182
or dword [ebx + 0x44], 1
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x52219c
mov ecx, dword [ebp - 0x1c]
inc ecx
jne 0x52219c
mov al, byte [ebp - 0x10]
add al, 0x46
mov byte [esi], al
inc esi
jmp 0x5227e3
mov edx, dword [ebp - 0x18]
dec edx
jne 0x5221b5
mov ecx, dword [ebp - 0x1c]
inc ecx
jne 0x5221b5
mov al, byte [ebp - 0x10]
add al, 0x48
mov byte [esi], al
inc esi
jmp 0x5227e3
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x5221cf
mov ecx, dword [ebp - 0x1c]
dec ecx
jne 0x5221cf
mov al, byte [ebp - 0x10]
add al, 0x4a
mov byte [esi], al
inc esi
jmp 0x5227e3
mov dl, byte [ebp - 0x10]
add dl, 0x4c
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0x18]
sar ecx, 8
mov byte [esi], cl
mov al, byte [ebp - 0x18]
and al, 0xff
mov byte [esi + 1], al
add esi, 2
mov edx, dword [ebp - 0x1c]
inc edx
jne 0x5221f6
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x1c]
sar eax, 8
mov byte [esi], al
mov dl, byte [ebp - 0x1c]
and dl, 0xff
mov byte [esi + 1], dl
add esi, 2
jmp 0x5227e3
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x5e
je 0x522239
mov edx, dword [ebp - 0x70]
mov cl, byte [edx]
cmp cl, 0x5f
je 0x522239
mov eax, dword [ebp - 0x70]
mov dl, byte [eax]
cmp dl, 0x5d
je 0x522239
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x60
jne 0x5227c8
xor edx, edx
mov edi, esi
mov dword [ebp - 0x154], edx
xor edx, edx
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x158], edx
mov ecx, dword [ebp - 0x70]
sub edi, eax
mov al, byte [ecx]
cmp al, 0x60
jne 0x522272
mov edx, dword [ebp - 0x70]
mov cl, byte [edx + 3]
cmp cl, 0x66
jne 0x522272
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x37
jmp 0x524174
mov edx, dword [ebp - 0x1c]
inc edx
jne 0x5222bf
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x15c], ecx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
xor edx, edx
mov dl, byte [eax + 1]
xor eax, eax
shl edx, 8
mov al, byte [ecx + 2]
or edx, eax
add dword [ebp - 0x15c], edx
mov edx, dword [ebp - 0x15c]
mov cl, byte [edx]
cmp cl, 0x55
jne 0x522281
mov eax, esi
mov edx, dword [ebp - 0x15c]
sub eax, edx
mov dword [ebp - 0x154], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x5223b6
mov eax, dword [ebp - 0x1c]
dec eax
jg 0x52231f
mov byte [esi], 0
push ebx
mov edx, dword [ebp - 0x78]
push edx
mov ecx, dword [ebp - 0x80]
mov edx, 1
mov eax, dword [ebp - 0x70]
call fcn.0051f5f0
push edi
mov ecx, dword [ebp - 0x70]
push ecx
mov eax, dword [ebp - 0x70]
inc eax
push eax
call sub.MSVCRT.DLL_memmove
add esp, 0xc
inc esi
mov edx, dword [ebp - 0x1c]
test edx, edx
jne 0x52230d
mov ecx, dword [ebp - 0x70]
mov byte [ecx], 0x6f
jmp 0x5229b8
mov edx, dword [ebp - 0x70]
mov al, byte [ebp - 0x10]
add al, 0x67
mov byte [edx], al
inc dword [ebp - 0x70]
jmp 0x5223ae
mov byte [esi], 0
push ebx
mov ecx, dword [ebp - 0x78]
push ecx
mov ecx, dword [ebp - 0x80]
mov edx, 4
mov eax, dword [ebp - 0x70]
call fcn.0051f5f0
push edi
mov eax, dword [ebp - 0x70]
push eax
mov edx, dword [ebp - 0x70]
add edx, 4
push edx
call sub.MSVCRT.DLL_memmove
mov eax, dword [ebp - 0x70]
mov cl, byte [ebp - 0x10]
add cl, 0x67
add esp, 0xc
mov byte [eax], cl
add esi, 4
inc dword [ebp - 0x70]
mov edx, dword [ebp - 0x70]
mov byte [edx], 0x5e
inc dword [ebp - 0x70]
mov ecx, dword [ebp - 0x158]
test ecx, ecx
jne 0x522373
xor eax, eax
jmp 0x52237e
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x158]
sub eax, edx
mov dword [ebp - 0x160], eax
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x158], ecx
mov eax, dword [ebp - 0x160]
mov edx, dword [ebp - 0x70]
sar eax, 8
mov byte [edx], al
mov eax, dword [ebp - 0x70]
mov cl, byte [ebp - 0x160]
and cl, 0xff
mov byte [eax + 1], cl
add dword [ebp - 0x70], 2
dec dword [ebp - 0x1c]
jmp 0x5224ea
mov edx, dword [ebp - 0x18]
dec edx
jle 0x5224dd
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x522428
mov eax, dword [ebp - 0x18]
dec eax
imul dword [ebp - 0x50]
mov dword [ebp - 0x164], eax
mov edx, dword [ebp - 0x18]
dec edx
mov dword [ebp - 0x220], edx
fild dword [ebp - 0x220]
fild dword [ebp - 0x50]
fmulp st(1)
fcomp qword [0x524188]
fnstsw ax
sahf
ja 0x52240a
mov edx, dword [ebp + 8]
mov ecx, 0x7fffffeb
mov eax, dword [edx]
sub ecx, eax
mov edx, dword [ebp - 0x164]
cmp ecx, edx
jge 0x522418
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x14
jmp 0x524174
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x164]
add dword [eax], edx
jmp 0x5224dd
mov ecx, dword [ebp - 0x64]
test ecx, ecx
je 0x52243c
mov eax, dword [ebp - 0x30]
test eax, eax
jge 0x52243c
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x150], 1
mov ecx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x18]
cmp ecx, eax
jge 0x5224dd
mov edx, dword [ebx + 0x20]
mov dword [ebp - 0x168], edx
push edi
mov ecx, dword [ebp - 0x70]
push ecx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x168]
cmp eax, edx
jae 0x5224bb
xor ecx, ecx
xor edx, edx
mov cl, byte [eax]
mov dl, byte [eax + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [ebx + 0x20]
add ecx, edi
sar ecx, 8
mov byte [edx], cl
mov cl, byte [eax]
mov dl, byte [eax + 1]
shl ecx, 8
add eax, 2
or cl, dl
mov edx, edi
add cl, dl
mov edx, dword [ebx + 0x20]
and cl, 0xff
mov byte [edx + 1], cl
add dword [ebx + 0x20], 2
mov ecx, dword [ebp - 0x168]
cmp eax, ecx
jb 0x52247b
mov eax, dword [ebp - 0x168]
add esi, edi
mov dword [ebp - 0x78], eax
inc dword [ebp - 0x150]
mov eax, dword [ebp - 0x150]
mov edx, dword [ebp - 0x18]
cmp eax, edx
jl 0x522457
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jle 0x5224ea
mov eax, dword [ebp - 0x18]
sub dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
test edx, edx
jl 0x52270a
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x52256c
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x52256c
mov edx, dword [ebp - 0x50]
add edx, 7
imul edx, dword [ebp - 0x1c]
add edx, 0xfffffffa
mov dword [ebp - 0x16c], edx
fild dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x50]
add ecx, 7
mov dword [ebp - 0x220], ecx
fild dword [ebp - 0x220]
fmulp st(1)
fcomp qword [0x524188]
fnstsw ax
sahf
ja 0x52254e
mov edx, dword [ebp + 8]
mov ecx, 0x7fffffeb
mov eax, dword [edx]
sub ecx, eax
mov edx, dword [ebp - 0x16c]
cmp ecx, edx
jge 0x52255c
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x14
jmp 0x524174
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x16c]
add dword [eax], edx
jmp 0x522685
mov ecx, dword [ebp - 0x1c]
dec ecx
mov dword [ebp - 0x150], ecx
mov eax, dword [ebp - 0x150]
test eax, eax
jl 0x522685
mov edx, dword [ebx + 0x20]
mov dword [ebp - 0x170], edx
mov cl, byte [ebp - 0x10]
add cl, 0x67
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x5225e1
mov byte [esi], 0x5e
inc esi
mov edx, dword [ebp - 0x158]
test edx, edx
jne 0x5225b2
xor ecx, ecx
jmp 0x5225bc
mov ecx, esi
mov eax, dword [ebp - 0x158]
sub ecx, eax
mov dword [ebp - 0x174], ecx
mov dword [ebp - 0x158], esi
mov edx, dword [ebp - 0x174]
sar edx, 8
mov byte [esi], dl
mov al, byte [ebp - 0x174]
and al, 0xff
mov byte [esi + 1], al
add esi, 2
push edi
mov edx, dword [ebp - 0x70]
push edx
push esi
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x170]
cmp eax, edx
jae 0x522666
xor ecx, ecx
xor edx, edx
mov cl, byte [eax]
mov dl, byte [eax + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [ebp - 0x150]
add ecx, edi
test edx, edx
je 0x52261d
mov edx, 4
jmp 0x522622
mov edx, 1
add ecx, edx
mov edx, dword [ebx + 0x20]
sar ecx, 8
mov byte [edx], cl
mov cl, byte [eax]
mov dl, byte [eax + 1]
shl ecx, 8
or cl, dl
mov edx, edi
add cl, dl
mov edx, dword [ebp - 0x150]
test edx, edx
je 0x522648
mov dl, 4
jmp 0x52264a
mov dl, 1
add cl, dl
mov edx, dword [ebx + 0x20]
and cl, 0xff
add eax, 2
mov byte [edx + 1], cl
add dword [ebx + 0x20], 2
mov ecx, dword [ebp - 0x170]
cmp eax, ecx
jb 0x5225fc
mov eax, dword [ebp - 0x170]
add esi, edi
mov dword [ebp - 0x78], eax
dec dword [ebp - 0x150]
mov eax, dword [ebp - 0x150]
test eax, eax
jge 0x522584
mov edx, dword [ebp - 0x158]
test edx, edx
je 0x5227e3
mov eax, esi
mov edx, dword [ebp - 0x158]
sub eax, edx
inc eax
mov edx, esi
sub edx, eax
xor ecx, ecx
mov cl, byte [edx + 1]
shl ecx, 8
movzx edi, byte [edx + 2]
or ecx, edi
mov dword [ebp - 0x178], ecx
mov ecx, dword [ebp - 0x178]
test ecx, ecx
jne 0x5226c4
xor ecx, ecx
jmp 0x5226d2
mov ecx, dword [ebp - 0x158]
mov edi, dword [ebp - 0x178]
sub ecx, edi
mov dword [ebp - 0x158], ecx
mov byte [esi], 0x55
inc esi
mov ecx, eax
sar ecx, 8
mov byte [esi], cl
mov ecx, eax
and cl, 0xff
mov byte [esi + 1], cl
mov ecx, eax
sar ecx, 8
add esi, 2
and al, 0xff
mov byte [edx + 1], cl
mov byte [edx + 2], al
mov eax, dword [ebp - 0x158]
test eax, eax
jne 0x522693
jmp 0x5227e3
mov eax, dword [ebp - 0x154]
mov edx, esi
sub edx, eax
xor ecx, ecx
mov dword [ebp - 0x17c], edx
mov edx, dword [ebp - 0x17c]
mov eax, dword [ebp - 0x17c]
mov cl, byte [edx + 1]
xor edx, edx
shl ecx, 8
mov dl, byte [eax + 2]
mov eax, dword [ebp - 0x17c]
or ecx, edx
sub eax, ecx
mov dword [ebp - 0x180], eax
mov ecx, dword [ebp - 0x17c]
mov dl, byte [ebp - 0x10]
add dl, 0x56
mov byte [ecx], dl
mov eax, dword [ebp + 8]
test eax, eax
jne 0x5227e3
mov edx, dword [ebp - 0x180]
mov cl, byte [edx]
cmp cl, 0x5d
je 0x5227e3
mov eax, dword [ebp - 0x180]
mov dword [ebp - 0x184], eax
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x17c]
mov eax, dword [ebp - 0x184]
call fcn.0051f294
test eax, eax
je 0x522798
mov edx, dword [ebp - 0x180]
add byte [edx], 3
jmp 0x5227e3
mov ecx, dword [ebp - 0x184]
mov edx, dword [ebp - 0x184]
xor eax, eax
mov al, byte [ecx + 1]
xor ecx, ecx
shl eax, 8
mov cl, byte [edx + 2]
or eax, ecx
add dword [ebp - 0x184], eax
mov eax, dword [ebp - 0x184]
mov dl, byte [eax]
cmp dl, 0x54
je 0x522775
jmp 0x5227e3
mov ecx, dword [ebp - 0x70]
mov al, byte [ecx]
cmp al, 0x6d
je 0x5229b8
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0xb
jmp 0x524174
mov ecx, dword [ebp - 0x9c]
test ecx, ecx
je 0x5229b8
mov eax, dword [ebp - 0x5c]
mov dl, byte [eax]
cmp dl, 0x27
je 0x52280e
mov ecx, dword [ebp - 0x5c]
mov al, byte [ecx]
cmp al, 0x41
je 0x52280e
mov edx, dword [ebp - 0x5c]
mov cl, byte [edx]
cmp cl, 0x34
jne 0x52284a
mov eax, dword [ebp - 0x5c]
mov dl, byte [eax]
cmp dl, 0x41
jne 0x522834
mov ecx, dword [ebp - 0x5c]
mov al, byte [ecx + 3]
cmp al, 0x10
je 0x52282d
mov edx, dword [ebp - 0x5c]
mov cl, byte [edx + 3]
cmp cl, 0xf
jne 0x522834
mov eax, 2
jmp 0x522836
xor eax, eax
mov edx, dword [ebp - 0x5c]
xor ecx, ecx
mov cl, byte [edx]
xor edx, edx
mov dl, byte [ecx + 0x5575d8]
add eax, edx
add dword [ebp - 0x5c], eax
mov eax, esi
mov ecx, dword [ebp - 0x5c]
sub eax, ecx
mov dword [ebp - 0x188], eax
mov eax, dword [ebp - 0x188]
test eax, eax
jle 0x5229b8
mov edx, dword [ebp - 0x5c]
xor ecx, ecx
mov cl, byte [edx]
add ecx, 0xffffffe1
cmp ecx, 0x20
ja case.0x52287e.31
mov cl, byte [ecx + 0x522885]
jmp dword [ecx*4 + 0x5228a6]
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0x28
jmp 0x5229b8
mov edx, dword [ebp - 0x5c]
mov byte [edx], 0x29
jmp 0x5229b8
mov ecx, dword [ebp - 0x5c]
mov byte [ecx], 0x2a
jmp 0x5229b8
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0x2b
jmp 0x5229b8
mov edx, dword [ebp - 0x5c]
mov byte [edx], 0x42
jmp 0x5229b8
mov ecx, dword [ebp - 0x5c]
mov byte [ecx], 0x43
jmp 0x5229b8
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0x44
jmp 0x5229b8
mov edx, dword [ebp - 0x5c]
mov byte [edx], 0x45
jmp 0x5229b8
mov ecx, dword [ebp - 0x5c]
mov byte [ecx], 0x35
jmp 0x5229b8
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0x36
jmp 0x5229b8
mov edx, dword [ebp - 0x5c]
mov byte [edx], 0x37
jmp 0x5229b8
mov ecx, dword [ebp - 0x5c]
mov byte [ecx], 0x38
jmp 0x5229b8
mov eax, dword [ebp - 0x188]
push eax
mov edx, dword [ebp - 0x5c]
push edx
mov ecx, dword [ebp - 0x5c]
add ecx, 3
push ecx
call sub.MSVCRT.DLL_memmove
add dword [ebp - 0x188], 3
mov eax, dword [ebp - 0x5c]
add esi, 3
add esp, 0xc
mov byte [eax], 0x5d
mov byte [esi], 0x55
inc esi
mov edx, dword [ebp - 0x188]
sar edx, 8
mov byte [esi], dl
mov cl, byte [ebp - 0x188]
and cl, 0xff
mov byte [esi + 1], cl
add esi, 2
mov eax, dword [ebp - 0x188]
mov edx, dword [ebp - 0x5c]
sar eax, 8
mov byte [edx + 1], al
mov eax, dword [ebp - 0x5c]
mov cl, byte [ebp - 0x188]
and cl, 0xff
mov byte [eax + 2], cl
xor edx, edx
mov dword [ebp - 0x70], edx
mov ecx, dword [ebp - 0x40]
or dword [ebx + 0x48], ecx
jmp 0x52416c
mov eax, dword [ebp - 0x48]
xor edx, edx
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0xc0], edx
mov dword [ebp - 0x20], 0x5f
mov ecx, dword [ebx + 0x20]
xor eax, eax
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0xa8], eax
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x2a
jne 0x522b09
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dl, byte [eax + 1]
mov ecx, dword [ebx + 0xc]
test byte [ecx + edx], 2
je 0x522b09
mov dword [ebp - 0x190], str.ACCEPT
inc dword [ebp - 0x68]
xor edx, edx
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x70], edx
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
mov edx, dword [ebx + 0xc]
test byte [edx + eax], 2
jne 0x522a2f
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x3a
jne 0x522a59
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3b
jmp 0x524174
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x29
je 0x522a70
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3c
jmp 0x524174
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x194]
sub ecx, eax
xor edi, edi
mov dword [ebp - 0x18c], ecx
jmp 0x522adf
mov eax, dword [edi*8 + 0x5565dc]
mov edx, dword [ebp - 0x18c]
cmp eax, edx
jne 0x522ad0
mov ecx, dword [ebp - 0x18c]
push ecx
mov eax, dword [ebp - 0x190]
push eax
mov edx, dword [ebp - 0x194]
push edx
call sub.MSVCRT.DLL_strncmp
add esp, 0xc
test eax, eax
jne 0x522ad0
mov cl, byte [edi*8 + 0x5565e0]
mov byte [esi], cl
mov al, byte [esi]
inc esi
cmp al, 0x6e
jne 0x522ae9
mov dword [ebx + 0x4c], 1
jmp 0x522ae9
mov edx, dword [edi*8 + 0x5565dc]
inc edx
add dword [ebp - 0x190], edx
inc edi
mov ecx, dword [0x556614]
cmp edi, ecx
jl 0x522a85
mov eax, dword [0x556614]
cmp edi, eax
jl 0x52416c
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3c
jmp 0x524174
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x3f
jne 0x523a19
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0x3a
jg 0x522ba2
je 0x522c24
add ecx, 0xffffffdf
cmp ecx, 0x18
ja case.0x522b37.34
jmp dword [ecx*4 + 0x522b3e]
cmp ecx, 0x43
jg 0x522bc9
je 0x52316e
sub ecx, 0x3c
je 0x52310b
dec ecx
je 0x5230d6
dec ecx
je 0x52315f
jmp case.0x522b37.34
sub ecx, 0x50
je 0x523224
sub ecx, 2
je 0x5235ee
sub ecx, 0x2a
je 0x522c1a
jmp case.0x522b37.34
inc dword [ebp - 0x68]
jmp 0x522bed
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
test dl, dl
je 0x522bff
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x29
jne 0x522bea
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
test cl, cl
jne 0x52416c
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x12
jmp 0x524174
mov dword [ebp - 0xa8], 1
mov dword [ebp - 0x20], 0x5e
inc dword [ebp - 0x68]
jmp 0x523a47
mov dword [ebp - 0x20], 0x60
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x3f
jne 0x522c71
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 2]
cmp dl, 0x3d
je 0x523a47
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 2]
cmp al, 0x21
je 0x523a47
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 2]
cmp cl, 0x3c
je 0x523a47
mov byte [esi + 3], 0x64
mov dword [ebp - 0xc0], 3
mov dword [ebp - 0xbc], 0xffffffff
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x52
jne 0x522cb2
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 2]
cmp al, 0x26
jne 0x522cb2
mov dword [ebp - 0xcc], 0xffffffff
add dword [ebp - 0x68], 2
mov byte [esi + 3], 0x65
jmp 0x522d13
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x3c
jne 0x522ccc
mov dword [ebp - 0xcc], 0x3e
inc dword [ebp - 0x68]
jmp 0x522d13
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x27
jne 0x522ce6
mov dword [ebp - 0xcc], 0x27
inc dword [ebp - 0x68]
jmp 0x522d13
xor ecx, ecx
mov dword [ebp - 0xcc], ecx
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x2d
je 0x522d03
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x2b
jne 0x522d13
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
mov dword [ebp - 0xbc], ecx
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dl, byte [eax + 1]
mov ecx, dword [ebx + 0xc]
test byte [ecx + edx], 0x10
jne 0x522d35
inc dword [ebp - 0x68]
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x1c
jmp 0x524174
xor edx, edx
mov dword [ebp - 0xb8], edx
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x1ac], ecx
jmp 0x522d8a
mov eax, dword [ebp - 0xb8]
test eax, eax
jl 0x522d87
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
test byte [ecx + 0x557071], 4
je 0x522d7e
mov eax, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x68]
add eax, eax
xor ecx, ecx
mov cl, byte [edx]
lea eax, [eax + eax*4]
add eax, ecx
add eax, 0xffffffd0
jmp 0x522d81
or eax, 0xffffffff
mov dword [ebp - 0xb8], eax
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
mov eax, dword [ebx + 0xc]
test byte [eax + ecx], 0x10
jne 0x522d4b
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x1ac]
sub edx, ecx
mov dword [ebp - 0x1a4], edx
mov eax, dword [ebp - 0xcc]
test eax, eax
jle 0x522dc9
mov edx, dword [ebp - 0x68]
inc dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
mov eax, dword [ebp - 0xcc]
cmp ecx, eax
jne 0x522dd6
mov edx, dword [ebp - 0x68]
inc dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x29
je 0x522de7
dec dword [ebp - 0x68]
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x1a
jmp 0x524174
mov edx, dword [ebp + 8]
test edx, edx
jne 0x523a47
mov ecx, dword [ebp - 0xbc]
test ecx, ecx
jle 0x522e84
mov eax, dword [ebp - 0xb8]
test eax, eax
jg 0x522e18
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3a
jmp 0x524174
mov ecx, dword [ebp - 0xbc]
cmp ecx, 0x2d
jne 0x522e31
mov eax, dword [ebx + 0x30]
mov edx, dword [ebp - 0xb8]
sub eax, edx
inc eax
jmp 0x522e3c
mov eax, dword [ebp - 0xb8]
mov edx, dword [ebx + 0x30]
add eax, edx
mov dword [ebp - 0xb8], eax
mov ecx, dword [ebp - 0xb8]
test ecx, ecx
jle 0x522e59
mov eax, dword [ebp - 0xb8]
mov edx, dword [ebx + 0x34]
cmp eax, edx
jle 0x522e67
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0xf
jmp 0x524174
mov eax, dword [ebp - 0xb8]
sar eax, 8
mov byte [esi + 4], al
mov dl, byte [ebp - 0xb8]
and dl, 0xff
mov byte [esi + 5], dl
jmp 0x523a47
mov ecx, dword [ebx + 0x24]
mov dword [ebp - 0x1b0], ecx
xor eax, eax
mov dword [ebp - 0x198], eax
jmp 0x522eca
mov edx, dword [ebp - 0x1a4]
push edx
mov ecx, dword [ebp - 0x1b0]
add ecx, 2
push ecx
mov eax, dword [ebp - 0x1ac]
push eax
call sub.MSVCRT.DLL_strncmp
add esp, 0xc
test eax, eax
je 0x522ed7
mov edx, dword [ebx + 0x2c]
add dword [ebp - 0x1b0], edx
inc dword [ebp - 0x198]
mov ecx, dword [ebp - 0x198]
mov eax, dword [ebx + 0x28]
cmp ecx, eax
jl 0x522e97
mov edx, dword [ebp - 0x198]
mov ecx, dword [ebx + 0x28]
cmp edx, ecx
jge 0x522f21
mov eax, dword [ebp - 0x1b0]
mov ecx, dword [ebp - 0x1b0]
xor edx, edx
mov dl, byte [eax]
xor eax, eax
shl edx, 8
mov al, byte [ecx + 1]
or edx, eax
mov dword [ebp - 0xb8], edx
mov edx, dword [ebp - 0xb8]
sar edx, 8
mov byte [esi + 4], dl
mov cl, byte [ebp - 0xb8]
and cl, 0xff
mov byte [esi + 5], cl
jmp 0x523a47
test byte [ebp - 0x48], 8
setne al
and eax, 1
push eax
mov ecx, dword [ebp - 0x1a4]
mov edx, dword [ebp - 0x1ac]
mov eax, ebx
call fcn.0051ed74
mov dword [ebp - 0x198], eax
test eax, eax
jle 0x522f66
mov edx, dword [ebp - 0x198]
sar edx, 8
mov byte [esi + 4], dl
mov cl, byte [ebp - 0x198]
and cl, 0xff
mov byte [esi + 5], cl
jmp 0x523a47
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x522f7e
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0xf
jmp 0x524174
mov ecx, dword [ebp - 0x1ac]
mov al, byte [ecx]
cmp al, 0x52
jne 0x52304a
xor edx, edx
mov dword [ebp - 0xb8], edx
mov dword [ebp - 0x198], 1
mov ecx, dword [ebp - 0x198]
mov eax, dword [ebp - 0x1a4]
cmp ecx, eax
jge 0x523015
mov edx, dword [ebp - 0x1ac]
mov ecx, dword [ebp - 0x198]
xor eax, eax
mov al, byte [edx + ecx]
test byte [eax + 0x557071], 4
jne 0x522fd8
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0xf
jmp 0x524174
mov ecx, dword [ebp - 0x1ac]
mov eax, dword [ebp - 0x198]
xor edx, edx
mov dl, byte [ecx + eax]
mov ecx, dword [ebp - 0xb8]
add ecx, ecx
lea ecx, [ecx + ecx*4]
add edx, ecx
add edx, 0xffffffd0
mov dword [ebp - 0xb8], edx
inc dword [ebp - 0x198]
mov eax, dword [ebp - 0x198]
mov edx, dword [ebp - 0x1a4]
cmp eax, edx
jl 0x522fb0
mov ecx, dword [ebp - 0xb8]
test ecx, ecx
jne 0x523029
mov dword [ebp - 0xb8], 0xffff
mov byte [esi + 3], 0x65
mov eax, dword [ebp - 0xb8]
sar eax, 8
mov byte [esi + 4], al
mov dl, byte [ebp - 0xb8]
and dl, 0xff
mov byte [esi + 5], dl
jmp 0x523a47
mov ecx, dword [ebp - 0x1a4]
cmp ecx, 6
jne 0x523082
push 6
push str.DEFINE
mov eax, dword [ebp - 0x1ac]
push eax
call sub.MSVCRT.DLL_strncmp
add esp, 0xc
test eax, eax
jne 0x523082
mov byte [esi + 3], 0x66
mov dword [ebp - 0xc0], 1
jmp 0x523a47
mov edx, dword [ebp - 0xb8]
test edx, edx
jle 0x5230b6
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebx + 0x34]
cmp ecx, eax
jg 0x5230b6
mov edx, dword [ebp - 0xb8]
sar edx, 8
mov byte [esi + 4], dl
mov cl, byte [ebp - 0xb8]
and cl, 0xff
mov byte [esi + 5], cl
jmp 0x523a47
mov eax, dword [ebp - 0xb8]
test eax, eax
jne 0x5230c7
mov edx, 0x23
jmp 0x5230cc
mov edx, 0xf
mov eax, dword [ebp + 0x1c]
mov dword [eax], edx
jmp 0x524174
mov dword [ebp - 0x20], 0x58
inc dword [ebp - 0x68]
jmp 0x523a47
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x29
jne 0x5230ff
mov byte [esi], 0x6d
inc esi
xor edx, edx
mov dword [ebp - 0x70], edx
jmp 0x52416c
mov dword [ebp - 0x20], 0x59
jmp 0x523a47
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
sub al, 0x21
je 0x523129
sub al, 0x1c
jne 0x523139
mov dword [ebp - 0x20], 0x5a
add dword [ebp - 0x68], 2
jmp 0x523a47
mov dword [ebp - 0x20], 0x5b
add dword [ebp - 0x68], 2
jmp 0x523a47
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx + 1]
mov eax, dword [ebx + 0xc]
test byte [eax + ecx], 0x10
jne case.0x522b37.39
inc dword [ebp - 0x68]
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x18
jmp 0x524174
mov dword [ebp - 0x20], 0x5d
inc dword [ebp - 0x68]
jmp 0x523a47
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x4c], 1
mov byte [esi], 0x53
inc esi
xor ecx, ecx
mov dword [ebp - 0x1b4], ecx
jmp 0x5231a3
mov eax, dword [ebp - 0x1b4]
mov edx, dword [ebp - 0x68]
add eax, eax
xor ecx, ecx
mov cl, byte [edx]
lea eax, [eax + eax*4]
add eax, ecx
add eax, 0xffffffd0
mov dword [ebp - 0x1b4], eax
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dl, byte [eax]
test byte [edx + 0x557071], 4
jne 0x523186
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x29
je 0x5231cd
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x27
jmp 0x524174
mov ecx, dword [ebp - 0x1b4]
cmp ecx, 0xff
jle 0x5231e9
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x26
jmp 0x524174
mov dl, byte [ebp - 0x1b4]
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebx + 0x18]
sub ecx, eax
inc ecx
sar ecx, 8
mov byte [esi], cl
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x18]
sub edx, ecx
inc edx
and dl, 0xff
mov byte [esi + 1], dl
mov byte [esi + 2], 0
mov byte [esi + 3], 0
add esi, 4
xor eax, eax
mov dword [ebp - 0x70], eax
jmp 0x52416c
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x3d
je 0x52323b
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x3e
jne 0x52325d
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x3e
sete dl
and edx, 1
mov dword [ebp - 0xa4], edx
mov dword [ebp - 0xcc], 0x29
jmp 0x523479
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x3c
je case.0x522b37.39
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x29
jmp 0x524174
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x3c
jne 0x523284
mov edx, 0x3e
jmp 0x523289
mov edx, 0x27
mov dword [ebp - 0xcc], edx
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x1ac], eax
jmp 0x5232a0
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
mov edx, dword [ebx + 0xc]
test byte [edx + eax], 0x10
jne 0x52329d
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x1ac]
sub ecx, eax
mov dword [ebp - 0x1a4], ecx
mov edx, dword [ebp + 8]
test edx, edx
je 0x52333c
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
mov edx, dword [ebp - 0xcc]
cmp eax, edx
je 0x5232e7
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x2a
jmp 0x524174
mov eax, dword [ebx + 0x28]
cmp eax, 0x2710
jl 0x5232ff
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x31
jmp 0x524174
mov ecx, dword [ebp - 0x1a4]
add ecx, 3
mov eax, dword [ebx + 0x2c]
cmp ecx, eax
jle 0x52345a
mov edx, dword [ebp - 0x1a4]
add edx, 3
mov dword [ebx + 0x2c], edx
mov ecx, dword [ebp - 0x1a4]
cmp ecx, 0x20
jle 0x52345a
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x30
jmp 0x524174
mov edx, dword [ebx + 0x24]
mov dword [ebp - 0x1b0], edx
xor ecx, ecx
mov dword [ebp - 0x198], ecx
jmp 0x5233f9
mov eax, dword [ebp - 0x1a4]
push eax
mov edx, dword [ebp - 0x1b0]
add edx, 2
push edx
mov ecx, dword [ebp - 0x1ac]
push ecx
call sub.MSVCRT.DLL_memcmp
add esp, 0xc
mov dword [ebp - 0x1b8], eax
mov eax, dword [ebp - 0x1b8]
test eax, eax
jne 0x5233b4
mov edx, dword [ebp - 0x1b0]
mov ecx, dword [ebp - 0x1a4]
mov al, byte [edx + ecx + 2]
test al, al
jne 0x5233aa
test byte [ebp - 0x46], 8
jne 0x5233b4
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x2b
jmp 0x524174
mov dword [ebp - 0x1b8], 0xffffffff
mov ecx, dword [ebp - 0x1b8]
test ecx, ecx
jge 0x5233ea
mov eax, dword [ebx + 0x28]
mov edx, dword [ebp - 0x198]
sub eax, edx
imul dword [ebx + 0x2c]
push eax
mov ecx, dword [ebp - 0x1b0]
push ecx
mov eax, dword [ebp - 0x1b0]
mov edx, dword [ebx + 0x2c]
add eax, edx
push eax
call sub.MSVCRT.DLL_memmove
add esp, 0xc
jmp 0x52340a
mov ecx, dword [ebx + 0x2c]
add dword [ebp - 0x1b0], ecx
inc dword [ebp - 0x198]
mov eax, dword [ebp - 0x198]
mov edx, dword [ebx + 0x28]
cmp eax, edx
jl 0x523352
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebp - 0x1b0]
inc ecx
sar ecx, 8
mov byte [eax], cl
mov dl, byte [ebx + 0x30]
mov ecx, dword [ebp - 0x1b0]
inc edx
and dl, 0xff
mov byte [ecx + 1], dl
mov eax, dword [ebp - 0x1a4]
push eax
mov edx, dword [ebp - 0x1ac]
push edx
mov ecx, dword [ebp - 0x1b0]
add ecx, 2
push ecx
call sub.MSVCRT.DLL_memcpy
mov eax, dword [ebp - 0x1b0]
mov edx, dword [ebp - 0x1a4]
add esp, 0xc
mov byte [eax + edx + 2], 0
inc dword [ebp - 0x68]
inc dword [ebx + 0x28]
jmp 0x523a28
mov dword [ebp - 0xcc], 0x29
mov dword [ebp - 0xa4], 1
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x1ac], ecx
jmp 0x52348a
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dl, byte [eax]
mov ecx, dword [ebx + 0xc]
test byte [ecx + edx], 0x10
jne 0x523487
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 0x1ac]
sub eax, edx
mov dword [ebp - 0x1a4], eax
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x52350f
mov eax, dword [ebp - 0x1a4]
test eax, eax
jne 0x5234ca
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3e
jmp 0x524174
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
mov edx, dword [ebp - 0xcc]
cmp eax, edx
je 0x5234e9
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x2a
jmp 0x524174
mov eax, dword [ebp - 0x1a4]
cmp eax, 0x20
jle 0x523502
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x30
jmp 0x524174
xor ecx, ecx
mov dword [ebp - 0xb8], ecx
jmp 0x5235db
mov eax, dword [ebx + 0x24]
mov dword [ebp - 0x1b0], eax
xor edx, edx
mov dword [ebp - 0x198], edx
jmp 0x523569
mov ecx, dword [ebp - 0x1a4]
push ecx
mov eax, dword [ebp - 0x1b0]
add eax, 2
push eax
mov edx, dword [ebp - 0x1ac]
push edx
call sub.MSVCRT.DLL_strncmp
add esp, 0xc
test eax, eax
jne 0x52355a
mov ecx, dword [ebp - 0x1b0]
mov eax, dword [ebp - 0x1a4]
mov dl, byte [ecx + eax + 2]
test dl, dl
je 0x523576
mov ecx, dword [ebx + 0x2c]
add dword [ebp - 0x1b0], ecx
inc dword [ebp - 0x198]
mov eax, dword [ebp - 0x198]
mov edx, dword [ebx + 0x28]
cmp eax, edx
jl 0x523522
mov ecx, dword [ebp - 0x198]
mov eax, dword [ebx + 0x28]
cmp ecx, eax
jge 0x5235a5
mov edx, dword [ebp - 0x1b0]
mov eax, dword [ebp - 0x1b0]
xor ecx, ecx
mov cl, byte [edx]
xor edx, edx
shl ecx, 8
mov dl, byte [eax + 1]
or ecx, edx
mov dword [ebp - 0xb8], ecx
jmp 0x5235db
test byte [ebp - 0x48], 8
setne cl
and ecx, 1
push ecx
mov ecx, dword [ebp - 0x1a4]
mov edx, dword [ebp - 0x1ac]
mov eax, ebx
call fcn.0051ed74
mov dword [ebp - 0xb8], eax
test eax, eax
jg 0x5235db
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0xf
jmp 0x524174
mov ecx, dword [ebp - 0xa4]
test ecx, ecx
jne 0x523723
jmp 0x523ef2
inc dword [ebp - 0x68]
mov dword [ebp - 0xcc], 0x29
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dl, byte [eax]
mov dword [ebp - 0xbc], edx
cmp edx, 0x2b
jne 0x52362e
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [eax]
test byte [ecx + 0x557071], 4
jne 0x523651
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x3f
jmp 0x524174
mov edx, dword [ebp - 0xbc]
cmp edx, 0x2d
jne 0x523651
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx + 1]
test byte [eax + 0x557071], 4
je case.0x522b37.34
inc dword [ebp - 0x68]
xor edx, edx
mov dword [ebp - 0xb8], edx
jmp 0x52367b
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebp - 0x68]
add ecx, ecx
xor edx, edx
mov dl, byte [eax]
lea ecx, [ecx + ecx*4]
add ecx, edx
add ecx, 0xffffffd0
mov dword [ebp - 0xb8], ecx
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx]
test byte [eax + 0x557071], 4
jne 0x52365b
mov edx, dword [ebp - 0x68]
xor ecx, ecx
mov cl, byte [edx]
mov eax, dword [ebp - 0xcc]
cmp ecx, eax
je 0x5236aa
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x1d
jmp 0x524174
mov ecx, dword [ebp - 0xbc]
cmp ecx, 0x2d
jne 0x5236f7
mov eax, dword [ebp - 0xb8]
test eax, eax
jne 0x5236cd
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x3a
jmp 0x524174
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebp - 0xb8]
sub ecx, eax
inc ecx
mov dword [ebp - 0xb8], ecx
mov edx, dword [ebp - 0xb8]
test edx, edx
jg 0x523723
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0xf
jmp 0x524174
mov eax, dword [ebp - 0xbc]
cmp eax, 0x2b
jne 0x523723
mov edx, dword [ebp - 0xb8]
test edx, edx
jne 0x52371a
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x3a
jmp 0x524174
mov eax, dword [ebx + 0x30]
add dword [ebp - 0xb8], eax
mov dword [ebp - 0x70], esi
mov edx, dword [ebx + 0x14]
mov dword [ebp - 0x1bc], edx
mov ecx, dword [ebp + 8]
test ecx, ecx
jne 0x52380e
mov byte [esi], 0
mov eax, dword [ebp - 0xb8]
test eax, eax
je 0x52375e
mov ecx, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x80]
mov eax, dword [ebx + 0x14]
call fcn.0051f108
mov dword [ebp - 0x1bc], eax
mov edx, dword [ebp - 0x1bc]
test edx, edx
jne 0x5237cb
test byte [ebp - 0x48], 8
setne cl
and ecx, 1
xor edx, edx
push ecx
mov eax, ebx
mov ecx, dword [ebp - 0xb8]
call fcn.0051ed74
test eax, eax
jge 0x523794
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0xf
jmp 0x524174
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebp - 0xb8]
add edx, ecx
lea eax, [esi + 4]
mov dword [ebp - 0x1bc], edx
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x20]
sub eax, edx
sar eax, 8
mov byte [ecx], al
lea eax, [esi + 4]
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x20]
sub eax, edx
and al, 0xff
mov byte [ecx + 1], al
add dword [ebx + 0x20], 2
jmp 0x52380e
mov eax, dword [ebp - 0x1bc]
xor edx, edx
mov ecx, dword [ebp - 0x1bc]
mov dl, byte [eax + 1]
xor eax, eax
shl edx, 8
mov al, byte [ecx + 2]
or edx, eax
jne 0x52380e
mov edx, dword [ebp - 0x80]
push edx
mov ecx, dword [ebp + 0x10]
mov edx, esi
mov eax, dword [ebp - 0x1bc]
call fcn.0051f520
test eax, eax
je 0x52380e
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x28
jmp 0x524174
mov byte [esi], 0x5d
mov byte [esi + 1], 0
mov byte [esi + 2], 6
add esi, 3
mov byte [esi], 0x52
mov eax, dword [ebp - 0x1bc]
mov edx, dword [ebx + 0x14]
sub eax, edx
sar eax, 8
mov byte [esi + 1], al
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebp - 0x1bc]
sub ecx, eax
and cl, 0xff
mov byte [esi + 2], cl
add esi, 3
mov byte [esi], 0x55
mov byte [esi + 1], 0
mov byte [esi + 2], 6
mov dword [ebp - 0x50], 9
add esi, 3
mov edx, dword [ebp - 0x2c]
cmp edx, 0xfffffffe
jne 0x52416c
mov dword [ebp - 0x2c], 0xffffffff
jmp 0x52416c
xor ecx, ecx
lea eax, [ebp - 0x19c]
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x19c], ecx
mov dword [ebp - 0x1a8], eax
jmp 0x52393e
mov edx, dword [ebp - 0x68]
inc dword [ebp - 0x68]
xor eax, eax
mov al, byte [edx]
cmp eax, 0x69
jg 0x5238b7
je 0x5238e8
sub eax, 0x2d
je 0x5238c8
sub eax, 0x1d
je 0x5238d6
sub eax, 0xb
je 0x523914
sub eax, 3
je 0x523922
jmp 0x52392d
sub eax, 0x6d
je 0x5238f3
sub eax, 6
je 0x5238fe
sub eax, 5
je 0x523909
jmp 0x52392d
lea edx, [ebp - 0x1a0]
mov dword [ebp - 0x1a8], edx
jmp 0x52393e
mov ecx, dword [ebp - 0x1a8]
or dword [ecx], 0x80000
or dword [ebx + 0x44], 0x10
jmp 0x52393e
mov eax, dword [ebp - 0x1a8]
or dword [eax], 1
jmp 0x52393e
mov edx, dword [ebp - 0x1a8]
or dword [edx], 2
jmp 0x52393e
mov ecx, dword [ebp - 0x1a8]
or dword [ecx], 4
jmp 0x52393e
mov eax, dword [ebp - 0x1a8]
or dword [eax], 8
jmp 0x52393e
mov edx, dword [ebp - 0x1a8]
or dword [edx], 0x200
jmp 0x52393e
mov ecx, dword [ebp - 0x1a8]
or dword [ecx], 0x40
jmp 0x52393e
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0xc
dec dword [ebp - 0x68]
jmp 0x524174
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x29
je 0x523956
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x3a
jne 0x523890
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x19c]
or ecx, eax
mov edx, dword [ebp - 0x1a0]
not edx
and ecx, edx
mov dword [ebp - 0xb4], ecx
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx]
cmp al, 0x29
jne 0x523a0d
mov edx, dword [ebx + 0x14]
add edx, 3
cmp esi, edx
jne 0x5239a4
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x523999
mov eax, dword [ebp + 8]
mov edx, dword [eax]
cmp edx, 6
jne 0x5239a4
mov ecx, dword [ebp - 0xb4]
mov dword [ebx + 0x40], ecx
jmp 0x5239f5
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0xb4]
and edx, 7
and eax, 7
cmp eax, edx
je 0x5239c7
mov byte [esi], 0x19
inc esi
mov cl, byte [ebp - 0xb4]
and cl, 7
mov byte [esi], cl
inc esi
test byte [ebp - 0xb3], 2
setne al
and eax, 1
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x24]
xor edx, 1
mov dword [ebp - 0x28], edx
test byte [ebp - 0xb4], 1
je 0x5239f0
mov ecx, pe_nt_image_headers32
jmp 0x5239f2
xor ecx, ecx
mov dword [ebp - 0x3c], ecx
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 4]
mov dword [edx], eax
xor ecx, ecx
mov dword [ebp - 0x70], ecx
jmp 0x52416c
mov dword [ebp - 0x20], 0x5e
inc dword [ebp - 0x68]
jmp 0x523a47
test byte [ebp - 0x47], 0x10
je 0x523a28
mov dword [ebp - 0x20], 0x5e
jmp 0x523a47
inc dword [ebx + 0x30]
mov eax, dword [ebx + 0x30]
sar eax, 8
mov byte [esi + 3], al
mov dl, byte [ebx + 0x30]
and dl, 0xff
mov byte [esi + 4], dl
mov dword [ebp - 0xc0], 2
mov ecx, dword [ebp - 0x20]
cmp ecx, 0x5d
jl 0x523a53
mov eax, esi
jmp 0x523a55
xor eax, eax
mov dword [ebp - 0x70], eax
xor eax, eax
mov dl, byte [ebp - 0x20]
mov byte [esi], dl
mov dword [ebp - 0x5c], esi
mov ecx, dword [ebx + 0x48]
lea edx, [ebp - 0x68]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x50], eax
push edx
mov ecx, dword [ebp + 0x1c]
push ecx
mov eax, dword [ebp - 0x20]
cmp eax, 0x5a
je 0x523a87
mov edx, dword [ebp - 0x20]
cmp edx, 0x5b
je 0x523a87
xor ecx, ecx
jmp 0x523a8c
mov ecx, 1
push ecx
lea ecx, [ebp - 0xc8]
mov eax, dword [ebp - 0xa8]
push eax
lea eax, [ebp - 0xc4]
mov edx, dword [ebp - 0xc0]
push edx
push ecx
push eax
mov edx, dword [ebp + 0x10]
push edx
push ebx
mov ecx, dword [ebp + 8]
test ecx, ecx
jne 0x523ab9
xor eax, eax
jmp 0x523abc
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x5c]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0xb4]
and edx, 7
call fcn.00524190
test eax, eax
je 0x524174
mov edx, dword [ebp - 0x20]
cmp edx, 0x60
jne 0x523b8a
mov ecx, dword [ebp + 8]
test ecx, ecx
jne 0x523b8a
mov dword [ebp - 0x1c0], esi
xor eax, eax
mov dword [ebp - 0x1c4], eax
inc dword [ebp - 0x1c4]
xor ecx, ecx
mov edx, dword [ebp - 0x1c0]
mov eax, dword [ebp - 0x1c0]
mov cl, byte [edx + 1]
xor edx, edx
shl ecx, 8
mov dl, byte [eax + 2]
or ecx, edx
add dword [ebp - 0x1c0], ecx
mov ecx, dword [ebp - 0x1c0]
mov al, byte [ecx]
cmp al, 0x55
jne 0x523afe
mov dl, byte [esi + 3]
cmp dl, 0x66
jne 0x523b59
mov ecx, dword [ebp - 0x1c4]
dec ecx
jle 0x523b50
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x36
jmp 0x524174
mov dword [ebp - 0x20], 0x66
jmp 0x523b8a
mov edx, dword [ebp - 0x1c4]
cmp edx, 2
jle 0x523b72
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], 0x1b
jmp 0x524174
mov eax, dword [ebp - 0x1c4]
dec eax
jne 0x523b8a
or edx, 0xffffffff
mov dword [ebp - 0xc4], edx
mov dword [ebp - 0xc8], edx
mov eax, dword [ebp - 0x68]
mov cl, byte [eax]
cmp cl, 0x29
je 0x523ba2
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0xe
jmp 0x524174
mov edx, dword [ebp + 8]
test edx, edx
je 0x523bf9
mov ecx, dword [ebp + 8]
mov eax, 0x7fffffeb
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x50]
add ecx, 0xfffffffa
sub eax, edx
cmp eax, ecx
jge 0x523bcd
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x14
jmp 0x524174
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x50]
add edx, 0xfffffffa
add dword [ecx], edx
mov byte [esi], 0x5e
inc esi
mov byte [esi], 0
mov byte [esi + 1], 3
add esi, 2
mov byte [esi], 0x55
inc esi
mov byte [esi], 0
mov byte [esi + 1], 3
add esi, 2
jmp 0x52416c
mov esi, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x20]
cmp eax, 0x66
je 0x52416c
mov edx, dword [ebp - 0x30]
xor eax, eax
mov dword [ebp - 0x34], edx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x64], eax
mov edx, dword [ebp - 0x20]
cmp edx, 0x5d
jl 0x523c96
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xfffffffe
jne 0x523c55
mov eax, dword [ebp - 0xc8]
test eax, eax
jl 0x523c45
mov edx, dword [ebp - 0xc8]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x64], 1
jmp 0x523c4c
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x38], 0xffffffff
jmp 0x523c7a
mov ecx, dword [ebp - 0xc8]
test ecx, ecx
jl 0x523c7a
mov eax, dword [ebp - 0xc4]
test eax, eax
jge 0x523c7a
mov edx, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0x44]
or edx, ecx
mov dword [ebp - 0xc4], edx
mov eax, dword [ebp - 0xc4]
test eax, eax
jl 0x52416c
mov edx, dword [ebp - 0xc4]
mov dword [ebp - 0x30], edx
jmp 0x52416c
mov ecx, dword [ebp - 0x20]
cmp ecx, 0x58
jne 0x52416c
mov eax, dword [ebp - 0xc4]
test eax, eax
jl 0x52416c
mov edx, dword [ebp - 0xc4]
mov dword [ebp - 0x30], edx
jmp 0x52416c
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x6c], ecx
mov eax, dword [ebp - 0x48]
push eax
push 0
lea eax, [ebp - 0x68]
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebp + 0x1c]
call fcn.0051e3b8
mov edi, eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
test edx, edx
jne 0x524174
test edi, edi
jge 0x524000
mov ecx, edi
neg ecx
cmp ecx, 0x1a
jne 0x523d22
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x5c
jne 0x523d16
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 2]
cmp al, 0x45
jne 0x523d16
add dword [ebp - 0x68], 2
jmp 0x52416c
mov dword [ebp - 0x60], 1
jmp 0x52416c
mov edx, edi
neg edx
cmp edx, 0x19
je 0x52416c
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xfffffffe
jne 0x523d50
mov eax, edi
neg eax
cmp eax, 5
jle 0x523d50
mov edx, edi
neg edx
cmp edx, 0x17
jge 0x523d50
mov dword [ebp - 0x2c], 0xffffffff
mov ecx, dword [ebp - 0x2c]
mov edx, edi
neg edx
mov dword [ebp - 0x38], ecx
cmp edx, 0x1b
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x34], eax
jne 0x523e78
mov ecx, dword [ebx + 0x20]
mov dword [ebp - 0x78], ecx
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
mov dl, byte [eax]
cmp dl, 0x3c
jne 0x523d83
mov ecx, 0x3e
jmp 0x523d88
mov ecx, 0x27
mov dword [ebp - 0xcc], ecx
xor eax, eax
mov dword [ebp - 0xc0], eax
xor edx, edx
mov dword [ebp - 0xa8], edx
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x2b
je 0x523e3e
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x2d
je 0x523e3e
mov dword [ebp - 0x1c8], 1
mov eax, dword [ebp - 0x68]
inc eax
jmp 0x523dee
xor edx, edx
mov dl, byte [eax]
mov ecx, dword [ebx + 0xc]
test byte [ecx + edx], 4
jne 0x523de0
xor edx, edx
mov dword [ebp - 0x1c8], edx
xor ecx, ecx
mov cl, byte [eax]
mov edx, dword [ebx + 0xc]
test byte [edx + ecx], 0x10
je 0x523e02
inc eax
mov cl, byte [eax]
test cl, cl
je 0x523e02
xor edx, edx
mov dl, byte [eax]
mov ecx, dword [ebp - 0xcc]
cmp edx, ecx
jne 0x523dcb
movzx eax, byte [eax]
mov edx, dword [ebp - 0xcc]
cmp eax, edx
je 0x523e1d
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0x39
jmp 0x52416c
mov ecx, dword [ebp - 0x1c8]
test ecx, ecx
je 0x523e2f
inc dword [ebp - 0x68]
jmp 0x5235fb
mov dword [ebp - 0xa4], 1
jmp 0x523479
mov eax, dword [ebp - 0x68]
add eax, 2
jmp 0x523e47
inc eax
xor edx, edx
mov dl, byte [eax]
test byte [edx + 0x557071], 4
jne 0x523e46
xor ecx, ecx
mov cl, byte [eax]
mov eax, dword [ebp - 0xcc]
cmp ecx, eax
je 0x523e70
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0x39
jmp 0x52416c
inc dword [ebp - 0x68]
jmp 0x5235fb
mov ecx, edi
neg ecx
cmp ecx, 0x1c
jne 0x523ede
mov eax, dword [ebp - 0x68]
mov dl, byte [eax + 1]
cmp dl, 0x3c
je 0x523ea1
mov ecx, dword [ebp - 0x68]
mov al, byte [ecx + 1]
cmp al, 0x27
je 0x523ea1
mov edx, dword [ebp - 0x68]
mov cl, byte [edx + 1]
cmp cl, 0x7b
jne 0x523ede
xor eax, eax
mov dword [ebp - 0xa4], eax
inc dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x3c
jne 0x523ebd
mov eax, 0x3e
jmp 0x523ed3
mov edx, dword [ebp - 0x68]
mov cl, byte [edx]
cmp cl, 0x27
jne 0x523ece
mov eax, 0x27
jmp 0x523ed3
mov eax, 0x7d
mov dword [ebp - 0xcc], eax
jmp 0x523479
mov edx, edi
neg edx
cmp edx, 0x1d
jl 0x523f63
neg edi
add edi, 0xffffffe3
mov dword [ebp - 0xb8], edi
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xfffffffe
jne 0x523f01
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x70], esi
mov byte [esi], 0x51
inc esi
mov eax, dword [ebp - 0xb8]
sar eax, 8
mov byte [esi], al
mov dl, byte [ebp - 0xb8]
and dl, 0xff
mov byte [esi + 1], dl
add esi, 2
mov ecx, dword [ebp - 0xb8]
cmp ecx, 0x20
jge 0x523f3c
mov ecx, dword [ebp - 0xb8]
mov eax, 1
shl eax, cl
jmp 0x523f41
mov eax, 1
or dword [ebx + 0x3c], eax
mov edx, dword [ebp - 0xb8]
mov ecx, dword [ebx + 0x38]
cmp edx, ecx
jle 0x52416c
mov eax, dword [ebp - 0xb8]
mov dword [ebx + 0x38], eax
jmp 0x52416c
mov edx, edi
neg edx
cmp edx, 0xf
je 0x523f75
mov ecx, edi
neg ecx
cmp ecx, 0x10
jne 0x523fd9
mov eax, dword [ebp + 0x1c]
lea ecx, [ebp - 0x1d0]
push eax
lea eax, [ebp - 0x68]
lea edx, [ebp - 0x1cc]
call fcn.0051e794
mov dword [ebp - 0x1d4], eax
mov edx, dword [ebp - 0x1d4]
test edx, edx
jl 0x524174
neg edi
cmp edi, 0x10
mov dword [ebp - 0x70], esi
sete cl
and ecx, 1
mov eax, dword [ebp - 0x1cc]
cmp ecx, eax
je 0x523fbd
mov dl, 0x10
jmp 0x523fbf
mov dl, 0xf
mov byte [esi], dl
inc esi
mov al, byte [ebp - 0x1d4]
mov byte [esi], al
inc esi
mov cl, byte [ebp - 0x1d0]
mov byte [esi], cl
inc esi
jmp 0x52416c
mov eax, edi
neg eax
cmp eax, 5
jle 0x523fef
mov edx, edi
neg edx
cmp edx, 0x17
jge 0x523fef
mov ecx, esi
jmp 0x523ff1
xor ecx, ecx
mov dword [ebp - 0x70], ecx
mov eax, edi
neg al
mov byte [esi], al
inc esi
jmp 0x52416c
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x524021
cmp edi, 0x7f
jle 0x524021
lea edx, [ebp - 0xd8]
mov eax, edi
call fcn.0052efe4
mov dword [ebp - 0xd0], eax
jmp 0x524087
mov ecx, edi
mov byte [ebp - 0xd8], cl
mov dword [ebp - 0xd0], 1
jmp 0x524087
mov dword [ebp - 0xd0], 1
mov eax, edi
mov byte [ebp - 0xd8], al
mov edx, dword [ebp - 0x80]
test edx, edx
je 0x524087
cmp edi, 0xc0
jl 0x524087
jmp 0x524073
inc dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0xd0]
mov al, byte [ecx]
mov byte [ebp + edx - 0xd8], al
inc dword [ebp - 0xd0]
mov ecx, dword [ebp - 0x68]
xor eax, eax
mov al, byte [ecx + 1]
and eax, 0xc0
cmp eax, 0x80
je 0x524058
mov dword [ebp - 0x70], esi
test byte [ebp - 0x48], 1
je 0x524094
mov dl, 0x1d
jmp 0x524096
mov dl, 0x1c
mov byte [esi], dl
lea eax, [ebp - 0xd8]
mov dword [ebp - 0x1dc], eax
inc esi
mov edx, dword [ebp - 0xd0]
xor edi, edi
cmp edi, edx
jge 0x5240cd
mov ecx, dword [ebp - 0x1dc]
mov al, byte [ecx]
mov byte [esi], al
inc esi
inc edi
inc dword [ebp - 0x1dc]
mov edx, dword [ebp - 0xd0]
cmp edi, edx
jl 0x5240b1
mov cl, byte [ebp - 0xd8]
cmp cl, 0xd
je 0x5240e2
mov al, byte [ebp - 0xd8]
cmp al, 0xa
jne 0x5240e6
or dword [ebx + 0x44], 0x20
mov edx, dword [ebp - 0x2c]
cmp edx, 0xfffffffe
jne 0x52413e
mov dword [ebp - 0x38], 0xffffffff
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xd0]
dec eax
je 0x52410b
mov edx, dword [ebp - 0x3c]
test edx, edx
jne 0x524133
xor ecx, ecx
mov cl, byte [ebp - 0xd8]
mov eax, dword [ebp - 0x3c]
or ecx, eax
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0xd0]
dec edx
je 0x52416c
xor ecx, ecx
mov cl, byte [esi - 1]
mov eax, dword [ebx + 0x48]
or ecx, eax
mov dword [ebp - 0x30], ecx
jmp 0x52416c
or edx, 0xffffffff
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edx
jmp 0x52416c
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xd0]
dec eax
je 0x52415a
mov edx, dword [ebp - 0x3c]
test edx, edx
jne 0x52416c
xor ecx, ecx
mov cl, byte [esi - 1]
mov eax, dword [ebp - 0x3c]
or ecx, eax
mov edx, dword [ebx + 0x48]
or ecx, edx
mov dword [ebp - 0x30], ecx
inc dword [ebp - 0x68]
jmp 0x520307
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x68]
mov dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18