Function at 0x51f061
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
mov eax, dword [0x5be1ec]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x154], ecx
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x144], ecx
mov ecx, dword [ebp + 0x20]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x128], eax
mov dword [ebp - 0x148], ecx
mov ecx, dword [ebp + 0x24]
mov dword [ebp - 0x14c], ecx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x124], ecx
mov ecx, dword [ebx]
mov dword [ebp - 0x138], ebx
mov ebx, dword [eax]
xor eax, eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xa4], eax
mov eax, ecx
shr eax, 0xb
and eax, 1
mov dword [ebp - 0x150], edx
mov edx, dword [edx]
mov dword [ebp - 0x9c], eax
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0x118], eax
xor eax, 1
mov dword [ebp - 0x11c], eax
mov eax, ecx
mov esi, dword [ebp + 0x14]
and eax, 1
mov edi, dword [ebp + 0x30]
mov dword [ebp - 0x68], esi
mov esi, dword [ebp + 0x34]
mov dword [ebp - 0xf4], eax
xor eax, eax
mov dword [ebp - 0x64], edi
mov dword [ebp - 0x70], esi
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0xf0], 0
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x108], edx
mov dword [ebp - 0x114], edx
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x104], 0
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xe0], 0
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xb0], 0xfffffffe
mov dword [ebp - 0xc8], 0xfffffffe
mov dword [ebp - 0xb4], 0xfffffffe
mov dword [ebp - 0x94], 0xfffffffe
mov dword [ebp - 0xe8], 0x7fffffeb
mov dword [ebp - 0x140], 1
jmp 0x51c100
mov eax, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x70]
nop dword [eax]
movzx ecx, byte [ebx]
mov dword [ebp - 0x60], ecx
test ecx, ecx
jne 0x51c11e
test eax, eax
je 0x51c11e
mov ebx, eax
xor eax, eax
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x7c], eax
movzx ecx, byte [ebx]
mov dword [ebp - 0x60], ecx
test esi, esi
je 0x51c1c7
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x3c]
add eax, 0xffffff9c
add eax, ecx
cmp edx, eax
ja 0x51ff26
mov eax, dword [ebp - 0x108]
cmp edx, eax
cmovb edx, eax
mov dword [ebp - 0x58], edx
mov ecx, dword [ebp - 0x58]
mov edx, dword [esi]
sub ecx, eax
mov eax, dword [ebp - 0xe8]
sub eax, edx
cmp eax, ecx
jl 0x51ff18
sub edx, dword [ebp - 0x108]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x58]
add edx, eax
mov ecx, dword [ebp - 0x78]
mov dword [esi], edx
test ecx, ecx
je 0x51c1ab
cmp ecx, dword [ebp - 0x114]
jbe 0x51c1bc
mov ebx, dword [ebp - 0x114]
sub eax, ecx
push eax
push ecx
push ebx
call fcn.004ad450
mov edx, dword [ebp - 0x58]
mov eax, ebx
sub eax, dword [ebp - 0x78]
add esp, 0xc
add edx, eax
mov dword [ebp - 0x78], ebx
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x108], edx
jmp 0x51c1d6
mov edx, dword [ebp - 0x114]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x108], edx
jmp 0x51c1d6
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x108], edx
jmp 0x51c1d6
mov eax, dword [edi + 0x3c]
add eax, dword [edi + 0x10]
cmp dword [edi + 0x20], eax
ja 0x520265
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x51c33e
cmp ecx, 0x5c
jne 0x51c207
cmp byte [ebx + 1], 0x45
lea eax, [ebx + 1]
jne 0x51c207
mov ebx, eax
mov dword [ebp - 0xa0], 0
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
cmp dword [ebp - 0xa0], 0
je 0x51c318
mov eax, dword [ebp - 0xdc]
test eax, eax
je 0x51c252
test esi, esi
jne 0x51c248
movzx ecx, byte [eax + 2]
movzx eax, byte [eax + 3]
shl ecx, 8
or ecx, eax
sub ebx, ecx
mov ecx, dword [ebp - 0xdc]
sub ebx, dword [edi + 0x18]
mov eax, ebx
sar eax, 8
mov byte [ecx + 4], al
mov byte [ecx + 5], bl
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0xdc], 0
test dword [ebp - 0x8c], 0x4000
mov ecx, dword [ebp - 0x60]
je case.0x51c590.1
mov word [edx], 0xff76
mov eax, ebx
sub eax, dword [edi + 0x18]
sar eax, 8
mov byte [edx + 2], al
lea eax, [edx + 6]
sub bl, byte [edi + 0x18]
mov byte [edx + 3], bl
mov word [edx + 4], 0
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0xdc], edx
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x9c], 0
mov esi, 1
mov byte [ebp - 0xc], cl
je 0x51c2c5
cmp ecx, 0xc0
jb 0x51c2c5
mov al, byte [ebx + 1]
inc ebx
and al, 0xc0
cmp al, 0x80
jne 0x51c2c5
nop
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
inc ebx
mov byte [ebp + esi - 0xc], al
inc esi
movzx eax, byte [ebx]
and al, 0xc0
cmp al, 0x80
je 0x51c2b0
mov ebx, dword [ebp - 0x8c]
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
cmp dword [ebp - 0x9c], 0
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0xa4], eax
je 0x51fdf9
test bl, 1
je 0x51fdfc
movzx edx, byte [ebp - 0xc]
cmp edx, 0xc0
jb 0x51fd7d
test dl, 0x20
jne 0x51fced
movzx eax, byte [ebp - 0xb]
and edx, 0x1f
jmp 0x51fd75
cmp ecx, 0x5c
jne 0x51c33e
cmp byte [ebx + 1], 0x51
lea eax, [ebx + 1]
jne 0x51c33e
mov ebx, eax
mov dword [ebp - 0xa0], 1
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov esi, dword [ebp - 0x8c]
and esi, 8
mov dword [ebp - 0x90], esi
je 0x51c3de
mov eax, dword [ebp - 0x64]
mov edi, ebx
mov eax, dword [eax + 0xc]
test byte [eax + ecx], 1
je 0x51c371
inc ebx
mov dword [ebp - 0x5c], ebx
movzx ecx, byte [ebx]
mov dword [ebp - 0x60], ecx
test byte [eax + ecx], 1
jne 0x51c361
cmp ecx, 0x23
jne 0x51c3d0
inc ebx
mov dword [ebp - 0x5c], ebx
mov dl, byte [ebx]
test dl, dl
je 0x51c3d0
mov eax, dword [ebp - 0x64]
mov ecx, dword [eax + 0x84]
test ecx, ecx
je 0x51c427
mov eax, dword [eax + 0x1c]
cmp ebx, eax
jae 0x51c462
mov edx, dword [ebp - 0x64]
push dword [ebp - 0x9c]
lea esi, [edx + 0x88]
push esi
push eax
push ecx
push ebx
call fcn.00535740
mov ebx, dword [ebp - 0x5c]
add esp, 0x14
test eax, eax
je 0x51c462
add ebx, dword [esi]
mov dword [ebp - 0x5c], ebx
mov esi, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x58]
cmp ebx, edi
mov edi, dword [ebp - 0x64]
ja 0x51c0f6
cmp ecx, 0x28
jne 0x51c4a9
cmp byte [ebx + 1], 0x3f
jne 0x51c4d5
cmp byte [ebx + 2], 0x23
jne 0x51c4d5
add ebx, 3
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
test al, al
je 0x51c419
cmp al, 0x29
je 0x51c492
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
test al, al
jne 0x51c407
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x12
jmp 0x52026e
mov ecx, dword [eax + 0x88]
lea esi, [eax + 0x88]
mov eax, dword [eax + 0x1c]
sub eax, ecx
cmp ebx, eax
ja 0x51c462
mov eax, dword [ebp - 0x64]
cmp dl, byte [eax + 0x8c]
jne 0x51c462
cmp ecx, 1
je 0x51c3c2
mov edx, dword [ebp - 0x64]
mov al, byte [ebx + 1]
cmp al, byte [edx + 0x8d]
je 0x51c3c2
inc ebx
cmp dword [ebp - 0x9c], 0
mov dword [ebp - 0x5c], ebx
je 0x51c483
mov al, byte [ebx]
and al, 0xc0
cmp al, 0x80
jne 0x51c483
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
and al, 0xc0
cmp al, 0x80
je 0x51c477
mov dl, byte [ebx]
test dl, dl
jne 0x51c380
jmp 0x51c3c7
cmp byte [ebx], 0
je 0x51c419
mov edx, dword [ebp - 0x58]
inc ebx
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
cmp ecx, 0x2a
je 0x51c531
cmp ecx, 0x2b
je 0x51c531
cmp ecx, 0x3f
je 0x51c531
cmp ecx, 0x7b
jne 0x51c4d5
lea eax, [ebx + 1]
push eax
call fcn.00521ef0
add esp, 4
test eax, eax
jne 0x51c531
mov ecx, dword [ebp - 0xdc]
xor edx, edx
mov eax, dword [ebp - 0x7c]
test ecx, ecx
je 0x51c539
test eax, eax
jne 0x51c539
mov eax, dword [ebp - 0xfc]
dec dword [ebp - 0xfc]
test eax, eax
jg 0x51c536
cmp dword [ebp - 0x70], edx
jne 0x51c529
mov eax, dword [ebp - 0xdc]
movzx ecx, byte [ecx + 2]
shl ecx, 8
movzx eax, byte [eax + 3]
or ecx, eax
sub ebx, ecx
mov ecx, dword [ebp - 0xdc]
sub ebx, dword [edi + 0x18]
mov eax, ebx
sar eax, 8
mov byte [ecx + 4], al
mov byte [ecx + 5], bl
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0xdc], edx
jmp 0x51c536
mov edx, 1
mov eax, dword [ebp - 0x7c]
test dword [ebp - 0x8c], 0x4000
je 0x51c57d
test edx, edx
jne 0x51c57d
test eax, eax
jne 0x51c57d
mov eax, dword [ebp - 0x58]
lea ecx, [eax + 1]
mov dword [ebp - 0xdc], eax
mov byte [eax], 0x76
mov eax, ebx
mov byte [ecx], 0xff
sub eax, dword [edi + 0x18]
sar eax, 8
mov byte [ecx + 1], al
lea eax, [ecx + 5]
sub bl, byte [edi + 0x18]
mov byte [ecx + 2], bl
mov word [ecx + 3], dx
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x60]
cmp ecx, 0x7c
ja case.0x51c590.1
movzx eax, byte [ecx + 0x5202c0]
jmp dword [eax*4 + 0x52028c]
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x78], 0
test cl, 2
je 0x51c5e2
cmp dword [ebp - 0x94], 0xfffffffe
jne 0x51c5c6
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0xc8], 0xffffffff
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov byte [edx], 0x1c
inc edx
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov byte [edx], 0x1b
inc edx
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
test byte [ebp - 0x8c], 2
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
setne al
add al, 0x19
mov dword [ebp - 0x78], 0
mov byte [edx], al
inc edx
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov ecx, dword [ebp - 0x94]
mov eax, 0xffffffff
mov edx, dword [ebp - 0x58]
cmp ecx, 0xfffffffe
mov esi, dword [edi + 0x20]
cmove ecx, eax
mov dword [ebp - 0x78], edx
mov eax, dword [ebp - 0xd0]
sub esi, dword [edi + 0x10]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0x8c]
shr eax, 2
and al, 1
mov dword [ebp - 0x94], ecx
or al, 0xc
mov dword [ebp - 0xc8], ecx
mov ecx, dword [ebp - 0xb4]
mov byte [edx], al
inc edx
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0xa4], esi
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
test dword [edi + 0x60], 0x2000000
je case.0x51c590.1
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x40
jmp 0x52026e
push 6
lea eax, [ebx + 1]
push 0x58f798
push eax
call fcn.004c00a0
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 0x5c]
jne 0x51c6ef
mov edx, dword [ebp - 0x58]
add eax, 7
mov ebx, str._b__w_
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x5c], ebx
jmp 0x51c0f9
push 6
inc eax
push str._:_:__
push eax
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51c71d
mov eax, dword [ebp - 0x5c]
mov ebx, str._b___w_
mov edx, dword [ebp - 0x58]
add eax, 7
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x5c], ebx
jmp 0x51c0f9
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x58]
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0x78], esi
mov al, byte [ebx + 1]
cmp al, 0x3a
je 0x51c741
cmp al, 0x2e
je 0x51c741
cmp al, 0x3d
jne 0x51c75c
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.0051b3e0
mov ebx, dword [ebp - 0x5c]
add esp, 8
test eax, eax
jne 0x51ffa7
xor ecx, ecx
mov dword [ebp - 0x88], ecx
inc ebx
mov dword [ebp - 0x5c], ebx
movzx edx, byte [ebx]
mov dword [ebp - 0x84], edx
cmp edx, 0x5c
jne 0x51c79e
inc ebx
cmp byte [ebx], 0x45
je 0x51c764
push 3
push 0x58f7a8
push ebx
call fcn.004c00a0
mov ebx, dword [ebp - 0x5c]
add esp, 0xc
test eax, eax
jne 0x51c7b4
mov ecx, dword [ebp - 0x88]
add ebx, 3
jmp 0x51c764
test ecx, ecx
jne 0x51c872
cmp edx, 0x5e
jne 0x51c872
lea ecx, [edx - 0x5d]
jmp 0x51c75e
mov edx, dword [ebp - 0x84]
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0xcc], eax
xor edi, edi
lea eax, [esi + 4]
mov dword [ebp - 0xa8], ecx
xor esi, esi
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x90], eax
xorps xmm0, xmm0
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x6c], ecx
movups xmmword [ebp - 0x2c], xmm0
movups xmmword [ebp - 0x1c], xmm0
test edx, edx
je 0x51ff99
nop word [eax + eax]
cmp dword [ebp - 0x9c], 0
mov dword [ebp - 0xec], edi
mov dword [ebp - 0x134], edi
mov dword [ebp - 0xc0], edi
mov edi, esi
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x130], esi
je 0x51c9b2
cmp edx, 0xc0
jb 0x51c9b2
movzx edx, byte [ebx]
mov dword [ebp - 0x84], edx
cmp edx, 0xc0
jb 0x51c9b2
test dl, 0x20
jne 0x51c8db
movzx eax, byte [ebx + 1]
inc ebx
and edx, 0x1f
and eax, 0x3f
shl edx, 6
or edx, eax
mov dword [ebp - 0x84], edx
jmp 0x51c9af
cmp edx, 0x5d
jne 0x51c7ba
test dword [edi + 0x60], 0x2000000
je 0x51c7ba
mov edx, dword [ebp - 0x58]
test ecx, ecx
mov esi, dword [ebp - 0x70]
mov ecx, 0xd
mov eax, 0x9d
cmovne eax, ecx
mov ecx, dword [ebp - 0x94]
mov byte [edx], al
inc edx
mov ebx, dword [ebp - 0x5c]
cmp ecx, 0xfffffffe
mov eax, 0xffffffff
mov dword [ebp - 0x58], edx
cmove ecx, eax
mov eax, dword [ebp - 0xd0]
inc ebx
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
movzx ecx, byte [ebx + 1]
mov eax, dword [ebp - 0x84]
and ecx, 0x3f
test dl, 0x10
jne 0x51c909
and eax, 0xf
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 2
jmp 0x51c9a7
test dl, 8
jne 0x51c936
and eax, 7
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 3
jmp 0x51c9a7
test dl, 4
jne 0x51c96c
and eax, 3
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 4]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 4
jmp 0x51c9a7
and eax, 1
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 4]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 5]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 5
mov dword [ebp - 0x84], eax
mov edx, eax
mov dword [ebp - 0x5c], ebx
mov eax, dword [ebp - 0x80]
cmp eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0xcc]
cmova ecx, dword [ebp - 0x140]
cmp dword [ebp - 0x70], 0
mov dword [ebp - 0xcc], ecx
je 0x51c9ee
mov ecx, dword [ebp - 0x90]
cmp eax, ecx
jbe 0x51c9ee
mov edx, dword [ebp - 0x70]
sub eax, ecx
mov dword [ebp - 0x80], ecx
add dword [edx], eax
mov edx, dword [ebp - 0x84]
cmp dword [ebp - 0xa0], 0
je 0x51ca23
cmp edx, 0x5c
jne 0x51ccc6
cmp byte [ebx + 1], 0x45
lea eax, [ebx + 1]
jne 0x51ccc6
mov edi, dword [ebp - 0x74]
mov ebx, eax
mov dword [ebp - 0xa0], 0
xor eax, eax
jmp 0x51d2b2
cmp edx, 0x5b
jne 0x51cc7c
mov al, byte [ebx + 1]
cmp al, 0x3a
je 0x51ca3f
cmp al, 0x2e
je 0x51ca3f
cmp al, 0x3d
jne 0x51ccc6
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.0051b3e0
mov ebx, dword [ebp - 0x5c]
add esp, 8
test eax, eax
je 0x51ccc6
cmp byte [ebx + 1], 0x3a
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x98], 0
mov edi, dword [eax + 8]
jne 0x51ff4e
add ebx, 2
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x5e
jne 0x51ca97
inc ebx
mov dword [ebp - 0x98], 1
mov dword [ebp - 0xa8], 1
mov dword [ebp - 0x5c], ebx
mov eax, dword [ebp - 0xd8]
sub eax, ebx
push eax
push ebx
call fcn.0051b390
mov esi, eax
add esp, 8
test esi, esi
js 0x51ff3d
mov eax, dword [ebp - 0x8c]
test al, 1
je 0x51cac5
xor ecx, ecx
cmp esi, 2
cmovle esi, ecx
test eax, 0x20000000
je 0x51cb6a
mov ecx, dword [ebp - 0x98]
mov eax, ecx
neg eax
sbb eax, eax
and eax, 0xe
add eax, esi
mov ebx, dword [eax*4 + 0x5bed98]
test ebx, ebx
je 0x51cb02
mov eax, dword [ebp - 0xd8]
mov esi, dword [ebp - 0x60]
inc eax
mov edi, dword [ebp - 0x74]
dec ebx
mov dword [ebp - 0x7c], eax
jmp 0x51d2ac
mov eax, esi
sub eax, 8
je 0x51cbc5
sub eax, 1
je 0x51cbbe
sub eax, 1
je 0x51cbb7
test ecx, ecx
je 0x51cb6a
mov eax, dword [ebp - 0xcc]
test eax, eax
jne 0x51cb39
mov eax, dword [ebp - 0xd8]
cmp byte [eax + 2], 0x5d
je 0x51cb6a
mov eax, dword [ebp - 0x80]
mov byte [eax], 2
mov eax, dword [ebp - 0x80]
inc eax
push eax
push 0x100
mov dword [ebp - 0x80], eax
call fcn.00535a30
mov ecx, dword [ebp - 0x80]
add ecx, eax
push ecx
push 0x10ffff
mov dword [ebp - 0x80], ecx
call fcn.00535a30
add esp, 0x10
add dword [ebp - 0x80], eax
lea ecx, [esi + esi*2]
mov eax, dword [ecx*4 + 0x58f290]
mov esi, dword [ecx*4 + 0x58f298]
movups xmm0, xmmword [eax + edi]
movups xmmword [ebp - 0x54], xmm0
movups xmm0, xmmword [eax + edi + 0x10]
mov eax, dword [ecx*4 + 0x58f294]
movups xmmword [ebp - 0x44], xmm0
test eax, eax
js 0x51cc1f
xor ecx, ecx
lea edx, [eax + edi]
test esi, esi
js 0x51cc10
mov al, byte [edx + ecx]
or byte [ebp + ecx - 0x54], al
inc ecx
cmp ecx, 0x20
jb 0x51cba8
jmp 0x51cc1f
mov edx, 0xd
jmp 0x51cbca
mov edx, 0xc
jmp 0x51cbca
mov edx, 0xb
mov eax, dword [ebp - 0x80]
test ecx, ecx
mov ebx, dword [ebp - 0xd8]
mov esi, dword [ebp - 0x60]
setne cl
mov edi, dword [ebp - 0x74]
add cl, 3
mov byte [eax], cl
mov ecx, 1
mov eax, dword [ebp - 0x80]
inc eax
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x80], eax
mov byte [eax], dl
mov eax, dword [ebp - 0x80]
inc eax
mov dword [ebp - 0x80], eax
mov byte [eax], 0
inc dword [ebp - 0x80]
inc ebx
mov eax, dword [ebp - 0xa0]
jmp 0x51d2b5
mov al, byte [edx + ecx]
not al
and byte [ebp + ecx - 0x54], al
inc ecx
cmp ecx, 0x20
jb 0x51cc10
test esi, esi
jns 0x51cc25
neg esi
cmp esi, 1
jne 0x51cc30
and byte [ebp - 0x53], 0xc3
jmp 0x51cc39
cmp esi, 2
jne 0x51cc39
and byte [ebp - 0x49], 0x7f
xor ecx, ecx
cmp dword [ebp - 0x98], ecx
je 0x51cc55
mov al, byte [ebp + ecx - 0x54]
not al
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51cc43
jmp 0x51cc63
mov al, byte [ebp + ecx - 0x54]
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51cc55
mov ebx, dword [ebp - 0xd8]
mov edi, 2
inc ebx
mov dword [ebp - 0x74], edi
mov esi, 1
jmp 0x51d2a9
cmp edx, 0x5c
jne 0x51ccc6
mov ebx, dword [ebp - 0x64]
lea eax, [ebp - 0x10c]
push 1
push dword [ebp - 0x8c]
push dword [ebx + 0x40]
push dword [ebp - 0x68]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.0051abc0
mov ecx, dword [ebp - 0x68]
add esp, 0x18
mov esi, eax
cmp dword [ecx], 0
jne 0x51ff46
test esi, esi
jne 0x51cd0d
mov edx, dword [ebp - 0x10c]
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x84], edx
cmp byte [ebx + 1], 0x5c
jne 0x51ccee
nop dword [eax]
cmp byte [ebx + 2], 0x45
lea eax, [ebx + 2]
jne 0x51ccee
mov ebx, eax
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x5c], ebx
cmp byte [ebx + 1], 0x5c
je 0x51ccd0
mov ecx, ebx
cmp edx, 0xd
je 0x51ccfe
cmp edx, 0xa
jne 0x51cff7
mov esi, dword [ebp - 0x64]
or dword [esi + 0x64], 0x800
jmp 0x51cffa
cmp esi, 5
jne 0x51cd17
lea edx, [esi + 3]
jmp 0x51ccbd
cmp esi, 0xc
je 0x51ff67
cmp esi, 0x1a
jne 0x51cd58
mov ebx, dword [ebp - 0x5c]
cmp byte [ebx + 1], 0x5c
jne 0x51cd42
cmp byte [ebx + 2], 0x45
jne 0x51cd42
mov esi, dword [ebp - 0x60]
add ebx, 2
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
mov esi, dword [ebp - 0x60]
mov eax, 1
mov edi, dword [ebp - 0x74]
mov dword [ebp - 0xa0], eax
jmp 0x51d2b2
cmp esi, 0x19
je 0x51cdae
inc dword [ebp - 0x60]
lea eax, [esi - 6]
add dword [ebp - 0x74], 2
mov edx, dword [ebx + 8]
cmp eax, 0x1c
ja case.0x51cd7a.12
movzx eax, byte [eax + 0x520374]
jmp dword [eax*4 + 0x520340]
mov ebx, dword [esi*4 + 0x5bed0c]
mov esi, edi
mov eax, dword [ebp - 0x5c]
dec ebx
mov edi, dword [ebp - 0x74]
mov dword [ebp - 0x7c], eax
jmp 0x51d2a9
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [edx + ecx + 0x40]
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51cda0
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
mov dword [ebp - 0xa8], 1
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [edx + ecx + 0x40]
not al
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51cdd0
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
xor ecx, ecx
mov al, byte [edx + ecx + 0xa0]
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51cdf0
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
mov dword [ebp - 0xa8], 1
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [edx + ecx + 0xa0]
not al
or byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, 0x20
jb 0x51ce20
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
lea eax, [ebp - 0x2c]
xor esi, esi
sub edx, eax
lea ecx, [ebp - 0x2c]
add ecx, esi
inc esi
mov al, byte [ecx + edx]
or byte [ecx], al
cmp esi, 0x20
jb 0x51ce48
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
lea eax, [ebp - 0x2c]
mov dword [ebp - 0xa8], 1
xor esi, esi
sub edx, eax
lea ecx, [ebp - 0x2c]
add ecx, esi
inc esi
mov al, byte [ecx + edx]
not al
or byte [ecx], al
cmp esi, 0x20
jb 0x51ce77
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
push 0xffffffffffffffff
push 0x5a20d0
push ebx
push dword [ebp - 0x8c]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00519f80
mov ebx, dword [ebp - 0x5c]
add esp, 0x18
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
push 0x5a20d0
push ebx
push dword [ebp - 0x8c]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0051a0d0
mov ebx, dword [ebp - 0x5c]
add esp, 0x14
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
push 0xffffffffffffffff
push 0x5a2120
push ebx
push dword [ebp - 0x8c]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00519f80
mov ebx, dword [ebp - 0x5c]
add esp, 0x18
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
push 0x5a2120
push ebx
push dword [ebp - 0x8c]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0051a0d0
mov ebx, dword [ebp - 0x5c]
add esp, 0x14
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x74]
jmp 0x51d2ac
push ecx
lea eax, [ebp - 0xb0]
mov dword [ebp - 0x98], 0
push eax
lea eax, [ebp - 0x98]
mov dword [ebp - 0xb0], 0
push eax
lea eax, [ebp - 0x12c]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00521c20
add esp, 0x14
test eax, eax
je 0x51ff46
xor eax, eax
mov edi, dword [ebp - 0x74]
cmp esi, 0x10
mov esi, dword [ebp - 0x130]
mov dword [ebp - 0x60], esi
sete al
cmp eax, dword [ebp - 0x12c]
mov eax, dword [ebp - 0x80]
sete cl
add cl, 3
mov byte [eax], cl
mov ecx, dword [ebp - 0x80]
movzx eax, byte [ebp - 0x98]
inc ecx
mov dword [ebp - 0x80], ecx
mov byte [ecx], al
mov ecx, dword [ebp - 0x80]
movzx eax, byte [ebp - 0xb0]
inc ecx
mov dword [ebp - 0x80], ecx
mov byte [ecx], al
mov ecx, 1
inc dword [ebp - 0x80]
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x6c], ecx
jmp 0x51d2b5
test byte [ebp - 0x8c], 0x40
mov ebx, dword [ebp - 0x5c]
jne 0x51ff5c
movzx edx, byte [ebx]
jmp 0x51ccc0
mov esi, dword [ebp - 0x64]
mov edi, dword [ebp - 0xa0]
test edi, edi
jne 0x51d24f
cmp byte [ebx + 1], 0x2d
jne 0x51d24f
add ebx, 2
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x5c
jne 0x51d067
nop dword [eax]
cmp byte [ebx + 1], 0x45
jne 0x51d033
add ebx, 2
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x5c
je 0x51d020
jmp 0x51d067
cmp byte [ebx], 0x5c
jne 0x51d067
cmp byte [ebx + 1], 0x51
jne 0x51d067
add ebx, 2
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x5c
jne 0x51d05c
cmp byte [ebx + 1], 0x45
jne 0x51d05c
add ebx, 2
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x5c
je 0x51d038
jmp 0x51d067
mov edi, 1
mov dword [ebp - 0xa0], edi
mov al, byte [ebx]
test al, al
je 0x51d24a
test edi, edi
jne 0x51d07d
cmp al, 0x5d
je 0x51d24a
cmp dword [ebp - 0x9c], 0
movzx eax, al
mov dword [ebp - 0x60], eax
mov dword [ebp - 0xb0], eax
je 0x51d18e
cmp eax, 0xc0
jb 0x51d18e
test al, 0x20
jne 0x51d0bc
mov ecx, dword [ebp - 0x60]
inc ebx
and ecx, 0x1f
shl ecx, 6
movzx eax, byte [ebx]
and eax, 0x3f
or eax, ecx
jmp 0x51d182
movzx ecx, byte [ebx + 1]
mov edx, dword [ebp - 0x84]
and ecx, 0x3f
test al, 0x10
jne 0x51d0e9
and eax, 0xf
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 2
jmp 0x51d182
test al, 8
jne 0x51d112
and eax, 7
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 3
jmp 0x51d182
test al, 4
jne 0x51d147
and eax, 3
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 4]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 4
jmp 0x51d182
and eax, 1
shl eax, 6
or ecx, eax
movzx eax, byte [ebx + 2]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 3]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 4]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [ebx + 5]
shl ecx, 6
and eax, 0x3f
or eax, ecx
add ebx, 5
mov dword [ebp - 0x60], eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0x5c], ebx
test edi, edi
jne 0x51d21e
cmp eax, 0x5c
jne 0x51d1ef
mov edi, dword [ebp - 0x68]
lea eax, [ebp - 0xb0]
push 1
push dword [ebp - 0x8c]
push dword [esi + 0x40]
push edi
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.0051abc0
add esp, 0x18
cmp dword [edi], 0
jne 0x51ff46
mov ebx, dword [ebp - 0x5c]
test eax, eax
je 0x51d1e1
cmp eax, 5
jne 0x51ff75
mov edx, dword [ebp - 0x84]
lea ecx, [eax + 3]
jmp 0x51d224
mov ecx, dword [ebp - 0xb0]
mov edx, dword [ebp - 0x84]
jmp 0x51d224
cmp eax, 0x5b
jne 0x51d21e
mov al, byte [ebx + 1]
cmp al, 0x3a
je 0x51d203
cmp al, 0x2e
je 0x51d203
cmp al, 0x3d
jne 0x51d21e
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.0051b3e0
mov ebx, dword [ebp - 0x5c]
add esp, 8
test eax, eax
jne 0x51ff80
mov edi, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x60]
cmp ecx, edx
jb 0x51ff8e
je 0x51d24f
mov edi, 2
mov dword [ebp - 0x74], edi
cmp ecx, 0xd
je 0x51d240
cmp ecx, 0xa
jne 0x51d247
or dword [esi + 0x64], 0x800
push ecx
jmp 0x51d286
mov ebx, ecx
mov dword [ebp - 0x5c], ebx
mov edi, dword [ebp - 0x134]
inc edi
cmp dword [ebp - 0xec], 2
cmovge edi, dword [ebp - 0xc0]
cmp dword [ebp - 0xa0], 0
mov dword [ebp - 0x74], edi
jne 0x51d285
cmp dword [ebp - 0x6c], 0
jne 0x51d285
cmp edi, 1
jne 0x51d285
cmp byte [ebx + 1], 0x5d
je 0x51d44c
push edx
push edx
push esi
push dword [ebp - 0x8c]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0051a350
mov ebx, dword [ebp - 0x5c]
mov esi, eax
add esp, 0x18
add esi, dword [ebp - 0x98]
mov dword [ebp - 0x60], esi
mov eax, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x6c]
inc ebx
mov dword [ebp - 0x5c], ebx
movzx edx, byte [ebx]
mov dword [ebp - 0x84], edx
test edx, edx
jne 0x51d2ef
mov edx, dword [ebp - 0x7c]
test edx, edx
je 0x51ff99
lea ebx, [edx + 1]
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x5c], ebx
movzx edx, byte [ebx]
mov dword [ebp - 0x84], edx
test edx, edx
je 0x51ff99
cmp edx, 0x5d
jne 0x51c800
test eax, eax
jne 0x51c800
mov edx, dword [ebp - 0x90]
mov ebx, 1
cmp dword [ebp - 0x80], edx
mov edi, 0xffffffff
mov eax, dword [ebp - 0xcc]
cmova eax, ebx
mov ebx, dword [ebp - 0x94]
cmp ebx, 0xfffffffe
cmove ebx, edi
mov edi, dword [ebp - 0xd0]
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0xc8], ebx
mov ebx, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], ebx
mov ebx, dword [ebp - 0xb4]
mov dword [ebp - 0xe0], edi
mov dword [ebp - 0xb0], ebx
test eax, eax
je 0x51d59e
mov eax, dword [ebp - 0x8c]
test ecx, ecx
mov ecx, dword [ebp - 0xa8]
jne 0x51d37f
test ecx, ecx
je 0x51d37f
test eax, 0x20000000
je 0x51d5a4
mov edx, dword [ebp - 0x9c]
mov edi, dword [ebp - 0x88]
test edx, edx
je 0x51d3d3
test ecx, ecx
je 0x51d3d3
test edi, edi
jne 0x51d3d3
test eax, 0x20000000
jne 0x51d3d3
mov eax, dword [ebp - 0x80]
mov byte [eax], 2
mov eax, dword [ebp - 0x80]
inc eax
mov dword [ebp - 0x80], eax
test edx, edx
je 0x51d3d3
push eax
push 0x100
call fcn.00535a30
mov ecx, dword [ebp - 0x80]
add ecx, eax
push ecx
push 0x10ffff
mov dword [ebp - 0x80], ecx
call fcn.00535a30
add esp, 0x10
add dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x6c]
mov byte [eax], 0
inc dword [ebp - 0x80]
test edi, edi
mov byte [ecx], 0x70
setne al
mov byte [ecx + 3], al
test ebx, ebx
je 0x51d3f6
or al, 4
mov byte [ecx + 3], al
test esi, esi
jle 0x51d56a
or byte [ecx + 3], 2
add ecx, 4
mov eax, dword [ebp - 0x80]
sub eax, ecx
mov dword [ebp - 0x58], ecx
push eax
push ecx
lea eax, [ecx + 0x20]
push eax
call fcn.004ad450
add esp, 0xc
test edi, edi
je 0x51d42f
test ebx, ebx
jne 0x51d42f
xor ecx, ecx
not byte [ebp + ecx - 0x2c]
inc ecx
cmp ecx, 0x20
jb 0x51d425
movups xmm0, xmmword [ebp - 0x2c]
mov eax, dword [ebp - 0x58]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x1c]
movups xmmword [eax + 0x10], xmm0
mov ecx, dword [ebp - 0x80]
add ecx, 0x20
jmp 0x51d56d
mov eax, dword [ebp - 0xb8]
inc ebx
mov edi, dword [ebp - 0x88]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0xb0], eax
test edi, edi
je 0x51d535
mov eax, dword [ebp - 0x94]
mov ecx, 0xffffffff
mov ebx, dword [ebp - 0x9c]
cmp eax, 0xfffffffe
cmove eax, ecx
mov dword [ebp - 0x94], eax
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0x8c]
test ebx, ebx
je 0x51d4fd
test al, 1
je 0x51d4ff
mov eax, edx
test eax, eax
jns 0x51d4b0
add eax, 0x7f
sar eax, 7
movzx ecx, byte [eax + 0x591198]
mov eax, edx
shl ecx, 7
and eax, 0x8000007f
jns 0x51d4cb
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ecx*2 + 0x593398]
movzx eax, byte [eax*8 + 0x58fb1b]
test eax, eax
je 0x51d4f7
mov edx, dword [ebp - 0x58]
mov word [edx], 0x90f
mov byte [edx + 2], al
add edx, 3
mov dword [ebp - 0x58], edx
jmp 0x51d5f6
mov eax, dword [ebp - 0x8c]
test al, 1
mov ecx, dword [ebp - 0x58]
setne al
add al, 0x1f
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x58], ecx
test ebx, ebx
je 0x51d52d
cmp edx, 0x7f
jbe 0x51d52d
push ecx
push edx
call fcn.00535a30
mov edx, dword [ebp - 0x58]
add esp, 8
add edx, eax
mov dword [ebp - 0x58], edx
jmp 0x51d5f6
mov byte [ecx], dl
inc ecx
jmp 0x51d5f1
cmp dword [ebp - 0x9c], 0
je 0x51d55a
cmp edx, 0x7f
jbe 0x51d55a
lea eax, [ebp - 0xc]
push eax
push edx
call fcn.00535a30
mov edi, dword [ebp - 0x64]
add esp, 8
mov esi, eax
jmp 0x51c2c5
mov edi, dword [ebp - 0x64]
mov esi, 1
mov byte [ebp - 0xc], dl
jmp 0x51c2c5
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x78]
mov eax, ecx
mov edi, dword [ebp - 0x64]
sub eax, edx
sar eax, 8
mov dword [ebp - 0x58], ecx
mov byte [edx + 1], al
mov al, cl
mov ecx, edx
sub al, cl
mov byte [ecx + 2], al
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
inc ebx
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov ecx, dword [ebp - 0xa8]
mov ebx, dword [ebp - 0x70]
test ebx, ebx
je 0x51d5b2
mov eax, dword [ebp - 0x80]
sub eax, edx
add dword [ebx], eax
mov edi, dword [ebp - 0x88]
cmp edi, ecx
mov ecx, dword [ebp - 0x58]
setne al
add al, 0x6e
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x58], ecx
test ebx, ebx
jne 0x51d5ee
test edi, edi
je 0x51d5df
xor ecx, ecx
not byte [ebp + ecx - 0x2c]
inc ecx
cmp ecx, 0x20
jb 0x51d5d2
mov ecx, dword [ebp - 0x58]
movups xmm0, xmmword [ebp - 0x2c]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [ebp - 0x1c]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
mov dword [ebp - 0x58], ecx
mov edx, ecx
mov eax, dword [ebp - 0xd0]
mov ebx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0xb4]
inc ebx
mov edi, dword [ebp - 0x64]
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
test edx, edx
je case.0x51c590.1
mov edx, dword [ebp - 0x68]
lea eax, [ebp - 0xd4]
push edx
push eax
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebx + 1]
push eax
call fcn.00522f20
add esp, 0x10
mov ebx, eax
cmp dword [edx], 0
mov dword [ebp - 0x5c], ebx
jne 0x52026e
mov eax, dword [ebp - 0xd4]
mov ecx, dword [ebp - 0xbc]
jmp 0x51d698
xor ecx, ecx
or eax, 0xffffffff
jmp 0x51d689
mov ecx, 1
or eax, 0xffffffff
jmp 0x51d689
xor ecx, ecx
mov eax, 1
mov edx, dword [ebp - 0x68]
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x78], 0
je 0x51ffc2
test ecx, ecx
jne 0x51d6d9
mov edx, dword [ebp - 0xe0]
mov dword [ebp - 0xd0], edx
mov edx, dword [ebp - 0xc8]
mov dword [ebp - 0x94], edx
mov edx, dword [ebp - 0xcc]
mov dword [ebp - 0xb8], edx
mov edx, dword [ebp - 0xb0]
mov dword [ebp - 0xb4], edx
cmp ecx, eax
mov dword [ebp - 0xc0], 0
mov eax, dword [ebp - 0x78]
mov edx, 2
cmove edx, dword [ebp - 0xc0]
mov dword [ebp - 0xec], edx
mov dword [ebp - 0x98], 0
mov dword [ebp - 0xac], eax
test esi, esi
je 0x51d7c9
inc ebx
mov ecx, dword [edi + 0xc]
movzx eax, byte [ebx]
test byte [eax + ecx], 1
je 0x51d72b
nop
movzx eax, byte [ebx + 1]
inc ebx
test byte [eax + ecx], 1
jne 0x51d720
cmp byte [ebx], 0x23
jne 0x51d7c5
mov dl, byte [ebx + 1]
inc ebx
test dl, dl
je 0x51d713
nop dword [eax]
mov ecx, dword [edi + 0x84]
mov eax, dword [edi + 0x1c]
test ecx, ecx
je 0x51d771
cmp ebx, eax
jae 0x51d79b
push dword [ebp - 0x9c]
lea esi, [edi + 0x88]
push esi
push eax
push ecx
push ebx
call fcn.00535740
add esp, 0x14
test eax, eax
je 0x51d79b
add ebx, dword [esi]
jmp 0x51d713
mov ecx, dword [edi + 0x88]
lea esi, [edi + 0x88]
sub eax, ecx
cmp ebx, eax
ja 0x51d79b
cmp dl, byte [edi + 0x8c]
jne 0x51d79b
cmp ecx, 1
je 0x51d76d
mov al, byte [ebx + 1]
cmp al, byte [edi + 0x8d]
je 0x51d76d
inc ebx
cmp dword [ebp - 0x9c], 0
je 0x51d7ba
mov al, byte [ebx]
and al, 0xc0
cmp al, 0x80
jne 0x51d7ba
nop dword [eax]
mov al, byte [ebx + 1]
inc ebx
and al, 0xc0
cmp al, 0x80
je 0x51d7b0
mov dl, byte [ebx]
test dl, dl
jne 0x51d740
jmp 0x51d713
dec ebx
mov dword [ebp - 0x5c], ebx
cmp byte [ebx + 1], 0x28
jne 0x51d815
cmp byte [ebx + 2], 0x3f
jne 0x51d815
cmp byte [ebx + 3], 0x23
jne 0x51d815
add ebx, 4
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
test al, al
je 0x51c419
nop dword [eax + eax]
cmp al, 0x29
je 0x51d80c
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
test al, al
jne 0x51d7f0
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x12
jmp 0x52026e
cmp byte [ebx], 0
je 0x51c419
mov cl, byte [ebx + 1]
cmp cl, 0x2b
jne 0x51d834
inc ebx
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x98], 1
mov dword [ebp - 0x5c], ebx
jmp 0x51d851
cmp cl, 0x3f
jne 0x51d848
mov ecx, dword [ebp - 0x11c]
inc ebx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51d851
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x78]
cmp byte [eax], 0x75
jne 0x51d8cf
push 3
push eax
add eax, 3
push eax
call fcn.004ad450
mov eax, dword [ebp - 0x78]
add esp, 0xc
add dword [ebp - 0x58], 6
cmp dword [ebp - 0x70], 0
mov word [eax], 0x81
mov byte [eax + 2], 6
mov word [eax + 6], 0x78
mov byte [eax + 8], 6
mov dword [ebp - 0xf0], 9
jne 0x51d8cc
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0x20]
add eax, 2
cmp edx, eax
jb 0x51d8c9
movzx eax, byte [edx - 2]
movzx ecx, byte [edx - 1]
shl eax, 8
or ecx, eax
mov eax, dword [ebp - 0x78]
sub eax, dword [edi + 0x14]
inc eax
cmp ecx, eax
jne 0x51d8c9
lea eax, [ecx + 3]
sar eax, 8
add cl, 3
mov byte [edx - 2], al
mov eax, dword [edi + 0x20]
mov byte [eax - 1], cl
mov eax, dword [ebp - 0x78]
mov ebx, dword [ebp - 0x5c]
mov dl, byte [eax]
mov byte [ebp - 0xe1], dl
cmp dl, 0x1d
je 0x51e077
cmp dl, 0x1e
je 0x51e077
cmp dl, 0x1f
je 0x51e077
cmp dl, 0x20
je 0x51e077
cmp dl, 0x17
jae 0x51d919
mov esi, 0x34
movzx ecx, dl
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x84], ecx
jmp 0x51e14c
cmp dl, 0x6e
je 0x51dfb9
cmp dl, 0x6f
je 0x51dfb9
cmp dl, 0x70
je 0x51dfb9
cmp dl, 0x71
je 0x51dfb9
cmp dl, 0x72
je 0x51dfb9
cmp dl, 0x73
je 0x51dfb9
cmp dl, 0x74
je 0x51dfb9
cmp dl, 0x7d
jb 0x51dfa6
cmp dl, 0x87
ja 0x51dfa6
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x78]
sub eax, ecx
mov esi, dword [ebp - 0xa4]
mov dword [ebp - 0x88], eax
xor eax, eax
mov dword [ebp - 0x90], esi
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x84], eax
cmp dl, 0x87
jne 0x51d9a1
cmp byte [ecx + 3], 0x91
je 0x51df78
mov ecx, dword [ebp - 0xbc]
cmp dl, 0x81
jae 0x51d9d0
test ecx, ecx
jg 0x51df78
mov eax, dword [ebp - 0x60]
test eax, eax
js 0x51d9c0
cmp eax, 1
jle 0x51d9d3
mov eax, 1
mov dword [ebp - 0x60], eax
mov dword [ebp - 0xd4], eax
jmp 0x51d9d3
mov eax, dword [ebp - 0x60]
test ecx, ecx
jne 0x51da9e
push dword [ebp - 0xa4]
push edi
push dword [ebp - 0x9c]
cmp eax, 1
jg 0x51da44
mov eax, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x78]
push 1
push ebx
mov byte [eax], cl
call fcn.0051a540
push dword [ebp - 0x88]
lea esi, [ebx + 1]
push ebx
push esi
call fcn.004ad450
inc dword [ebp - 0x58]
add esp, 0x20
mov edx, dword [ebp - 0x60]
test edx, edx
jne 0x51da25
mov byte [ebx], 0xa1
mov ebx, dword [ebp - 0x5c]
jmp 0x51df78
mov al, byte [ebp - 0x6c]
sub al, 0x6e
mov dword [ebp - 0x84], ebx
mov byte [ebx], al
dec edx
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x78], esi
mov esi, dword [ebp - 0x90]
jmp 0x51dc0c
mov ebx, dword [ebp - 0x58]
push 4
push dword [ebp - 0x78]
mov byte [ebx], 0
call fcn.0051a540
push dword [ebp - 0x88]
mov eax, dword [ebp - 0x78]
push eax
add eax, 4
push eax
call fcn.004ad450
mov ecx, dword [ebp - 0x78]
add ebx, 4
mov al, byte [ebp - 0x6c]
add esp, 0x20
mov edx, dword [ebp - 0x60]
sub al, 0x6e
mov dword [ebp - 0x58], ebx
mov byte [ecx], al
mov byte [ecx + 1], 0x83
add ecx, 2
mov dword [ebp - 0xa8], ecx
mov word [ecx], 0
add ecx, 2
mov ebx, dword [ebp - 0x5c]
dec edx
mov dword [ebp - 0x78], ecx
jmp 0x51dc0c
cmp ecx, 1
jle 0x51dc03
cmp dword [ebp - 0x70], 0
je 0x51db03
mov eax, dword [ebp - 0xf0]
dec ecx
mov edx, ecx
imul edx, eax
movd xmm1, ecx
movd xmm0, eax
cvtdq2pd xmm1, xmm1
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm0
comisd xmm1, xmmword [0x58f858]
ja 0x51ff18
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xe8]
sub eax, ecx
cmp eax, edx
jl 0x51ff18
lea eax, [edx + ecx]
mov ecx, dword [ebp - 0x70]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xbc]
jmp 0x51dc03
cmp dword [ebp - 0x104], 0
je 0x51db2d
cmp dword [ebp - 0xb4], 0
jge 0x51db2d
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0x74], 1
cmp ecx, 1
jle 0x51dc03
mov ebx, dword [ebp - 0x88]
mov esi, dword [edi + 0x20]
sub esi, dword [edi + 0x10]
push ebx
push dword [ebp - 0x78]
push dword [ebp - 0x58]
call fcn.004ae560
mov edx, dword [ebp - 0x64]
add esp, 0xc
mov ecx, dword [edi + 0x3c]
mov edi, dword [ebp - 0x90]
sub ecx, esi
add ecx, edi
mov eax, dword [edx + 0x10]
add eax, 0xffffff9c
add eax, ecx
cmp dword [edx + 0x20], eax
jbe 0x51dba2
push edx
call fcn.00520e10
mov ecx, dword [ebp - 0x68]
add esp, 4
mov dword [ecx], eax
test eax, eax
jne 0x51ff46
mov edx, dword [ebp - 0x64]
mov ecx, dword [edx + 0x3c]
mov eax, dword [edx + 0x10]
sub ecx, esi
add ecx, edi
add eax, 0xffffff9c
add eax, ecx
cmp dword [edx + 0x20], eax
ja 0x51db75
mov eax, dword [edx + 0x10]
lea edx, [eax + edi]
mov edi, dword [ebp - 0x64]
add eax, esi
cmp edx, eax
jae 0x51dbe2
movzx ecx, byte [edx]
movzx eax, byte [edx + 1]
shl ecx, 8
or ecx, eax
mov eax, dword [edi + 0x20]
add ecx, ebx
sar ecx, 8
mov byte [eax], cl
mov cl, byte [edx + 1]
add edx, 2
mov eax, dword [edi + 0x20]
add cl, bl
mov byte [eax + 1], cl
add dword [edi + 0x20], 2
mov eax, dword [edi + 0x10]
add eax, esi
cmp edx, eax
jb 0x51dbb1
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x58], ebx
inc eax
mov ecx, dword [ebp - 0xbc]
mov dword [ebp - 0x90], esi
mov dword [ebp - 0x74], eax
cmp eax, ecx
jl 0x51db43
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x60]
test edx, edx
jle 0x51dc14
sub edx, ecx
mov dword [ebp - 0xd4], edx
test edx, edx
js 0x51de17
cmp dword [ebp - 0x70], 0
je 0x51dc76
test edx, edx
jle 0x51dc76
mov eax, dword [ebp - 0xf0]
add eax, 7
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mov ecx, eax
movd xmm1, eax
cvtdq2pd xmm1, xmm1
imul ecx, edx
mulsd xmm1, xmm0
sub ecx, 6
comisd xmm1, xmmword [0x58f858]
ja 0x51ff18
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0xe8]
mov edx, dword [esi]
sub eax, edx
cmp eax, ecx
jl 0x51ff18
lea eax, [ecx + edx]
mov dword [esi], eax
jmp 0x51ddc2
lea eax, [edx - 1]
mov dword [ebp - 0x90], eax
test eax, eax
js 0x51ddc2
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x58]
sub cl, 0x6e
mov dword [ebp - 0x6c], ecx
mov ebx, dword [ebp - 0x64]
mov edi, dword [edi + 0x20]
sub edi, dword [ebx + 0x10]
mov byte [edx], cl
inc edx
mov dword [ebp - 0x58], edx
test eax, eax
je 0x51dcd2
mov eax, dword [ebp - 0xa8]
mov byte [edx], 0x83
inc edx
test eax, eax
jne 0x51dcb8
xor ecx, ecx
jmp 0x51dcbc
mov ecx, edx
sub ecx, eax
mov eax, ecx
mov dword [ebp - 0xa8], edx
sar eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
add edx, 2
mov dword [ebp - 0x58], edx
push dword [ebp - 0x88]
push dword [ebp - 0x78]
push edx
call fcn.004ae560
mov ecx, dword [ebx + 0x3c]
add esp, 0xc
mov eax, dword [ebx + 0x10]
sub ecx, edi
add ecx, esi
add eax, 0xffffff9c
add eax, ecx
cmp dword [ebx + 0x20], eax
jbe 0x51dd22
push ebx
call fcn.00520e10
mov ecx, dword [ebp - 0x68]
add esp, 4
mov dword [ecx], eax
test eax, eax
jne 0x51ff46
mov ecx, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x10]
sub ecx, edi
add ecx, esi
add eax, 0xffffff9c
add eax, ecx
cmp dword [ebx + 0x20], eax
ja 0x51dcf8
mov eax, dword [ebx + 0x10]
lea edx, [eax + esi]
add eax, edi
cmp edx, eax
jae 0x51dd96
mov eax, dword [ebp - 0x90]
mov ecx, 1
test eax, eax
mov ebx, 4
mov esi, ecx
mov eax, 4
cmovne esi, ebx
mov ebx, ecx
cmovne ebx, eax
nop
movzx ecx, byte [edx]
movzx eax, byte [edx + 1]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0x64]
add ecx, dword [ebp - 0x88]
add ecx, esi
sar ecx, 8
mov eax, dword [eax + 0x20]
mov byte [eax], cl
mov eax, dword [ebp - 0x64]
mov cl, byte [edx + 1]
add edx, 2
add cl, byte [ebp - 0x88]
add cl, bl
mov eax, dword [eax + 0x20]
mov byte [eax + 1], cl
mov eax, dword [ebp - 0x64]
add dword [eax + 0x20], 2
mov eax, dword [eax + 0x10]
add eax, edi
cmp edx, eax
jb 0x51dd50
mov edx, dword [ebp - 0x58]
mov esi, edi
mov eax, dword [ebp - 0x90]
add edx, dword [ebp - 0x88]
sub eax, 1
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x64]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x90], eax
jns 0x51dc93
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x58]
test esi, esi
je 0x51dfe7
mov ebx, ecx
mov edx, ecx
sub ebx, esi
inc ebx
sub edx, ebx
movzx ecx, byte [edx + 1]
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
mov eax, ebx
sub esi, ecx
neg ecx
sbb ecx, ecx
sar eax, 8
and esi, ecx
mov ecx, dword [ebp - 0x58]
mov byte [ecx], 0x78
mov byte [ecx + 1], al
mov byte [ecx + 2], bl
add ecx, 3
mov dword [ebp - 0x58], ecx
mov byte [edx + 1], al
mov byte [edx + 2], bl
test esi, esi
jne 0x51ddd3
jmp 0x51dfe4
mov edx, dword [ebp - 0x58]
movzx ecx, byte [edx - 2]
lea edi, [edx - 3]
movzx eax, byte [edi + 2]
mov esi, edi
shl ecx, 8
or ecx, eax
sub esi, ecx
mov dword [ebp - 0x90], esi
mov al, byte [esi]
cmp al, 0x81
je 0x51de3e
cmp al, 0x82
jne 0x51de4d
mov ebx, dword [ebp - 0x98]
test ebx, ebx
je 0x51de53
mov byte [esi], 0x83
jmp 0x51de63
mov ebx, dword [ebp - 0x98]
cmp al, 0x81
je 0x51df9a
cmp al, 0x82
je 0x51df9a
cmp dword [ebp - 0x70], 0
jne 0x51dea6
nop dword [eax]
push 0
push dword [ebp - 0x64]
push dword [ebp - 0x9c]
push edi
push esi
call fcn.005209a0
add esp, 0x14
test eax, eax
jne 0x51dee2
movzx ecx, byte [esi + 1]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
add esi, ecx
cmp byte [esi], 0x77
je 0x51de70
mov esi, dword [ebp - 0x90]
mov edx, dword [ebp - 0x58]
cmp byte [esi], 0x87
jne 0x51dec1
movzx ecx, byte [esi + 1]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
cmp byte [ecx + esi], 0x77
je 0x51dec1
mov byte [esi], 0x8c
test ebx, ebx
je 0x51df6b
mov al, byte [esi]
cmp al, 0x87
je 0x51deed
cmp al, 0x8c
je 0x51deed
mov ecx, dword [ebp - 0x58]
inc al
mov byte [esi], al
mov byte [edi], 0x7b
jmp 0x51df4c
mov esi, dword [ebp - 0x90]
add byte [esi], 5
jmp 0x51dea3
push dword [ebp - 0xa4]
mov ebx, edx
mov byte [edx], 0
push dword [ebp - 0x64]
sub ebx, esi
push dword [ebp - 0x9c]
push 3
push esi
call fcn.0051a540
push ebx
lea eax, [esi + 3]
push esi
push eax
call fcn.004ad450
mov ecx, dword [ebp - 0x58]
add ebx, 3
add esp, 0x20
mov eax, 0x89
cmp byte [esi], 0x87
mov edx, 0x84
cmove eax, edx
mov byte [esi], al
mov eax, ebx
mov byte [ecx + 3], 0x7b
sar eax, 8
mov byte [ecx + 4], al
mov byte [ecx + 5], bl
add ecx, 6
mov dword [ebp - 0x58], ecx
mov byte [esi + 1], al
mov byte [esi + 2], bl
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x51df59
mov byte [eax], 0x94
cmp dword [ebp - 0xbc], 2
mov ebx, dword [ebp - 0x5c]
jge 0x51dfe7
jmp 0x51df75
mov eax, dword [ebp - 0x6c]
add al, 0x79
mov byte [edi], al
mov ebx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x64]
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0xec]
or dword [edi + 0x68], eax
inc ebx
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x58]
add al, 0x79
mov byte [edi], al
jmp 0x51dfe4
cmp dl, 0x9d
je 0x51df78
mov eax, dword [ebp - 0x68]
mov dword [eax], 0xb
jmp 0x52026e
mov ecx, dword [ebp - 0x60]
test ecx, ecx
jne 0x51dfc7
mov edx, eax
mov dword [ebp - 0x58], edx
jmp 0x51df7b
mov edx, dword [ebp - 0xbc]
test edx, edx
jne 0x51e029
cmp ecx, 0xffffffff
jne 0x51e01d
mov eax, dword [ebp - 0x6c]
add al, 0x62
mov ecx, dword [ebp - 0x58]
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x58], ecx
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x9c]
cmp dword [ebp - 0x98], 0
je 0x51df75
mov eax, dword [ebp - 0xac]
movzx edx, byte [eax]
lea eax, [edx - 0x1d]
cmp eax, 0x53
ja case.0x51e016.33
movzx eax, byte [eax + 0x5203a8]
jmp dword [eax*4 + 0x520394]
cmp ecx, 1
jne 0x51e03a
mov eax, dword [ebp - 0x6c]
add al, 0x66
jmp 0x51dfdb
cmp edx, 1
jne 0x51e03a
cmp ecx, 0xffffffff
jne 0x51e03a
mov eax, dword [ebp - 0x6c]
add al, 0x64
jmp 0x51dfdb
mov ebx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x6c]
add al, 0x68
mov byte [ebx], al
mov eax, edx
sar eax, 8
mov byte [ebx + 1], al
xor eax, eax
mov byte [ebx + 2], dl
add ebx, 3
cmp ecx, 0xffffffff
mov dword [ebp - 0x58], ebx
cmove ecx, eax
mov eax, ecx
mov dword [ebp - 0xd4], ecx
mov byte [ebx + 1], cl
mov ecx, ebx
sar eax, 8
add ecx, 2
mov byte [ebx], al
jmp 0x51dfe1
movzx eax, dl
sub eax, 0x1e
je 0x51e0af
sub eax, 1
je 0x51e0a8
sub eax, 1
je 0x51e097
mov dword [ebp - 0x88], 0
xor esi, esi
jmp 0x51e0ba
mov dword [ebp - 0x88], 0x27
mov esi, 0x27
jmp 0x51e0ba
mov esi, 0x1a
jmp 0x51e0b4
mov esi, 0xd
mov dword [ebp - 0x88], esi
cmp dword [ebp - 0x9c], 0
je 0x51e119
mov ecx, dword [ebp - 0x58]
dec ecx
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
jne 0x51e119
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
jne 0x51e0e1
mov al, byte [ecx - 1]
dec ecx
and al, 0xc0
cmp al, 0x80
je 0x51e0d7
mov edi, dword [ebp - 0x58]
mov eax, edi
sub eax, ecx
push eax
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x34]
push ecx
push eax
call fcn.004ae560
mov ecx, dword [ebp - 0x84]
add esp, 0xc
mov dl, byte [ebp - 0xe1]
or ecx, 0x10000000
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x84], ecx
jmp 0x51e14f
mov eax, dword [ebp - 0x58]
movzx ecx, byte [eax - 1]
mov dword [ebp - 0x84], ecx
cmp dl, 0x1e
ja 0x51e149
cmp dword [ebp - 0xbc], 1
jle 0x51e149
mov eax, dword [edi + 0x68]
or eax, dword [ebp - 0xf4]
mov dword [ebp - 0xb8], ecx
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0x78]
mov edi, dword [ebp - 0x58]
cmp dl, 0x10
je 0x51e165
cmp dl, 0xf
je 0x51e165
mov dword [ebp - 0x74], 0xffffffff
or edx, 0xffffffff
jmp 0x51e170
movzx edx, byte [eax + 1]
movzx eax, byte [eax + 2]
mov dword [ebp - 0x74], eax
mov eax, edi
mov dword [ebp - 0xa8], edx
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0x58], edi
mov edi, dword [ebp - 0x60]
test edi, edi
je 0x51df75
add dword [ebp - 0x6c], esi
mov esi, dword [ebp - 0xbc]
test esi, esi
jne 0x51e1f0
mov eax, dword [ebp - 0x6c]
mov ebx, edi
cmp ebx, 0xffffffff
jne 0x51e1b2
mov ebx, dword [ebp - 0x78]
add al, 0x21
mov byte [ebx], al
lea eax, [ebx + 1]
mov dword [ebp - 0x58], eax
jmp 0x51e39f
cmp ebx, 1
jne 0x51e1c9
mov ebx, dword [ebp - 0x78]
add al, 0x25
mov byte [ebx], al
lea eax, [ebx + 1]
mov dword [ebp - 0x58], eax
jmp 0x51e39f
mov esi, dword [ebp - 0x78]
add al, 0x27
mov byte [esi], al
lea eax, [esi + 1]
mov dword [ebp - 0x58], eax
mov eax, ebx
mov esi, dword [ebp - 0x58]
sar eax, 8
mov byte [esi], al
mov eax, esi
mov byte [eax + 1], bl
add eax, 2
mov dword [ebp - 0x58], eax
jmp 0x51e39f
cmp esi, 1
jne 0x51e247
cmp edi, 0xffffffff
jne 0x51e20f
mov ebx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x6c]
add al, 0x23
mov byte [ebx], al
lea eax, [ebx + 1]
mov dword [ebp - 0x58], eax
jmp 0x51e39f
mov dword [ebp - 0x58], eax
cmp edi, 1
je 0x51df75
mov ebx, dword [ebp - 0x6c]
add bl, 0x27
mov byte [eax], bl
inc eax
mov ebx, dword [ebp - 0x60]
mov dword [ebp - 0x58], eax
mov esi, dword [ebp - 0x58]
lea eax, [ebx - 1]
dec bl
sar eax, 8
mov byte [esi], al
mov eax, esi
mov byte [eax + 1], bl
add eax, 2
mov dword [ebp - 0x58], eax
jmp 0x51e39f
mov ebx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x88]
add al, 0x29
mov byte [ebx], al
lea eax, [ebx + 1]
mov ebx, dword [ebp - 0xbc]
mov dword [ebp - 0x58], eax
mov eax, ebx
mov esi, dword [ebp - 0x58]
sar eax, 8
mov byte [esi], al
mov eax, esi
mov byte [eax + 1], bl
add eax, 2
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x60]
test eax, eax
jns 0x51e2ed
cmp dword [ebp - 0x9c], 0
je 0x51e2d0
test ecx, 0x10000000
je 0x51e2d0
mov ebx, dword [ebp - 0x58]
lea eax, [ebp - 0x34]
mov esi, ecx
and esi, 7
push esi
push eax
push ebx
call fcn.004ae560
mov ecx, dword [ebp - 0x84]
add esp, 0xc
mov edx, dword [ebp - 0xa8]
add ebx, esi
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 0x74]
mov esi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x6c]
add al, 0x21
mov byte [esi], al
mov eax, esi
inc eax
mov dword [ebp - 0x58], eax
jmp 0x51e3a2
mov eax, dword [ebp - 0x58]
mov byte [eax], cl
inc eax
mov dword [ebp - 0x58], eax
test edx, edx
js 0x51e2b8
mov ebx, dword [ebp - 0x74]
mov byte [eax], dl
mov byte [eax + 1], bl
add eax, 2
mov dword [ebp - 0x58], eax
jmp 0x51e2bb
cmp eax, ebx
je 0x51e39c
cmp dword [ebp - 0x9c], 0
je 0x51e32f
test ecx, 0x10000000
je 0x51e32f
mov ebx, dword [ebp - 0x58]
lea eax, [ebp - 0x34]
mov esi, ecx
and esi, 7
push esi
push eax
push ebx
call fcn.004ae560
mov ecx, dword [ebp - 0x84]
add esp, 0xc
mov edx, dword [ebp - 0xa8]
add ebx, esi
mov eax, dword [ebp - 0x60]
jmp 0x51e335
mov ebx, dword [ebp - 0x58]
mov byte [ebx], cl
inc ebx
mov dword [ebp - 0x58], ebx
test edx, edx
js 0x51e350
mov byte [ebx], dl
inc ebx
mov dword [ebp - 0x58], ebx
mov esi, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x74]
mov byte [esi], bl
inc esi
mov dword [ebp - 0x58], esi
jmp 0x51e356
mov ebx, dword [ebp - 0x74]
mov esi, dword [ebp - 0x58]
sub eax, dword [ebp - 0xbc]
mov dword [ebp - 0x60], eax
cmp eax, 1
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0x6c]
jne 0x51e37a
add al, 0x25
mov byte [esi], al
mov eax, dword [ebp - 0x58]
inc eax
mov dword [ebp - 0x58], eax
jmp 0x51e3a2
inc dword [ebp - 0x58]
add al, 0x27
mov byte [esi], al
mov esi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x60]
sar eax, 8
mov byte [esi], al
mov eax, dword [ebp - 0x60]
mov byte [esi + 1], al
mov eax, esi
add eax, 2
mov dword [ebp - 0x58], eax
jmp 0x51e3a2
mov eax, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x74]
mov esi, dword [ebp - 0x9c]
test esi, esi
je 0x51e3dc
test ecx, 0x10000000
je 0x51e3dc
and ecx, 7
push ecx
mov dword [ebp - 0x84], ecx
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.004ae560
mov ecx, dword [ebp - 0x58]
add esp, 0xc
add ecx, dword [ebp - 0x84]
mov edx, dword [ebp - 0xa8]
jmp 0x51e3e2
mov byte [eax], cl
mov ecx, dword [ebp - 0x58]
inc ecx
mov dword [ebp - 0x58], ecx
test edx, edx
js 0x51e3f4
mov byte [ecx], dl
mov byte [ecx + 1], bl
add ecx, 2
mov dword [ebp - 0x58], ecx
mov ebx, dword [ebp - 0x5c]
jmp 0x51dfed
mov eax, dword [ebp - 0xac]
mov al, byte [eax + 3]
cmp al, 0x10
je 0x51e423
cmp al, 0xf
je 0x51e423
movzx eax, byte [edx + 0x5a2028]
xor ecx, ecx
add eax, ecx
add dword [ebp - 0xac], eax
jmp 0x51e490
movzx eax, byte [edx + 0x5a2028]
mov ecx, 2
add eax, ecx
add dword [ebp - 0xac], eax
jmp 0x51e490
movzx eax, byte [edx + 0x5a2028]
mov edx, dword [ebp - 0xac]
add edx, eax
mov dword [ebp - 0xac], edx
test esi, esi
je case.0x51e016.33
mov al, byte [edx - 1]
cmp al, 0xc0
jb case.0x51e016.33
movzx eax, al
and eax, 0x3f
movzx eax, byte [eax + 0x5a16e8]
add dword [ebp - 0xac], eax
jmp case.0x51e016.33
add dword [ebp - 0xac], 0x21
jmp case.0x51e016.33
mov edx, dword [ebp - 0xac]
movzx ecx, byte [edx + 1]
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
add dword [ebp - 0xac], ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0xac]
mov eax, ecx
sub eax, edx
mov dword [ebp - 0xc0], eax
test eax, eax
jle 0x51df75
movzx eax, byte [edx]
cmp eax, 0x76
jae 0x51e4c4
mov al, byte [eax + 0x58f6f8]
test al, al
je 0x51e4c4
mov byte [edx], al
jmp 0x51df72
push dword [ebp - 0xa4]
mov edi, dword [ebp - 0x64]
push edi
push esi
mov byte [ecx], 0
push 3
push dword [ebp - 0xac]
call fcn.0051a540
mov ebx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0xac]
push ebx
push eax
add eax, 3
push eax
call fcn.004ad450
mov eax, dword [ebp - 0xac]
add ebx, 3
mov edx, dword [ebp - 0x58]
mov ecx, ebx
sar ecx, 8
add esp, 0x20
mov byte [eax], 0x81
mov byte [edx + 3], 0x78
mov byte [edx + 4], cl
mov byte [edx + 5], bl
add edx, 6
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0x58], edx
mov byte [eax + 1], cl
mov eax, dword [ebp - 0xac]
mov byte [eax + 2], bl
mov ebx, dword [ebp - 0x5c]
jmp 0x51df7b
inc ebx
mov dword [ebp - 0x5c], ebx
mov dl, byte [ebx]
cmp dl, 0x2a
jne 0x51e794
lea eax, [ebx + 1]
mov dword [ebp - 0x90], eax
mov al, byte [eax]
cmp al, 0x3a
je 0x51e565
movzx ecx, al
mov eax, dword [edi + 0xc]
test byte [ecx + eax], 2
je 0x51e794
mov eax, dword [ebp - 0x64]
xor esi, esi
mov edx, dword [ebp - 0x90]
mov edi, 0x58e320
mov ebx, edx
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x5c], ebx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0xa8], esi
movzx eax, byte [ebx]
mov dword [ebp - 0x78], esi
test byte [eax + ecx], 2
je 0x51e5ad
nop dword [eax]
inc ebx
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
test byte [eax + ecx], 2
jne 0x51e5a0
mov eax, ebx
sub eax, edx
cmp byte [ebx], 0x3a
mov dword [ebp - 0x88], eax
jne 0x51e600
inc ebx
mov dword [ebp - 0x5c], ebx
mov esi, ebx
mov dword [ebp - 0xa8], ebx
mov al, byte [ebx]
test al, al
je 0x51e5de
nop
cmp al, 0x29
je 0x51e5de
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
test al, al
jne 0x51e5d0
mov edx, ebx
sub edx, esi
mov dword [ebp - 0x98], edx
cmp edx, 0xff
ja 0x51ffcd
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x90]
cmp byte [ebx], 0x29
jne 0x51fffd
xor ebx, ebx
mov esi, 0x58e350
mov dword [ebp - 0x60], ebx
cmp eax, dword [esi]
jne 0x51e626
push eax
push edi
push edx
call fcn.004c00a0
add esp, 0xc
test eax, eax
je 0x51e64a
inc edi
inc ebx
add edi, dword [esi]
add esi, 0xc
mov dword [ebp - 0x60], ebx
cmp esi, str._b__w_
jge 0x51e783
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x90]
jmp 0x51e613
lea eax, [ebx + ebx*2]
mov ecx, dword [eax*4 + 0x58e354]
cmp ecx, 0x9e
jne 0x51e6dc
cmp dword [ebp - 0x98], 0
jne 0x51ffdb
mov edi, dword [ebp - 0x64]
mov ecx, dword [edi + 0x24]
mov dword [edi + 0x6c], 1
test ecx, ecx
je 0x51e6ad
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x51e68a
add dword [eax], 3
jmp 0x51e6a7
mov edx, dword [ebp - 0x58]
mov byte [edx], 0xa0
movzx eax, byte [ecx + 5]
mov byte [edx + 1], al
movzx eax, byte [ecx + 4]
mov byte [edx + 2], al
add edx, 3
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x58], edx
mov ecx, dword [ecx]
test ecx, ecx
jne 0x51e681
cmp dword [edi + 0x5c], 0
mov ecx, 0xffffffff
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x94]
setg bl
add bl, 0x9e
mov byte [edx], bl
inc edx
cmp eax, 0xfffffffe
mov dword [ebp - 0x58], edx
cmove eax, ecx
mov dword [ebp - 0x94], eax
jmp 0x51e755
mov edx, dword [ebp - 0x98]
test edx, edx
jne 0x51e6fb
test ecx, ecx
js 0x51ffec
mov edx, dword [ebp - 0x58]
mov bl, cl
mov byte [edx], bl
inc edx
mov dword [ebp - 0x58], edx
jmp 0x51e752
cmp dword [eax*4 + 0x58e358], 0
jl 0x51ffdb
mov ecx, dword [ebp - 0x58]
mov bl, byte [eax*4 + 0x58e358]
mov eax, dword [ebp - 0x70]
mov byte [ecx], bl
test eax, eax
je 0x51e727
add dword [eax], edx
mov byte [ecx + 1], 0
add ecx, 2
jmp 0x51e749
push edx
push dword [ebp - 0xa8]
mov byte [ecx + 1], dl
add ecx, 2
push ecx
mov dword [ebp - 0x58], ecx
call fcn.004ae560
mov ecx, dword [ebp - 0x58]
add esp, 0xc
add ecx, dword [ebp - 0x98]
mov byte [ecx], 0
inc ecx
mov dword [ebp - 0x58], ecx
mov edx, ecx
mov edi, dword [ebp - 0x64]
movzx eax, bl
add eax, 0xffffff6a
cmp eax, 5
ja case.default.0x51e762
jmp dword [eax*4 + 0x5203fc]
or dword [edi + 0x64], 0x1000
jmp case.default.0x51e762
mov dword [edi + 0x70], 1
cmp dword [ebp - 0x60], 9
jl 0x51ff06
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x3c
jmp 0x52026e
mov esi, dword [edi + 0x20]
sub esi, dword [edi + 0x10]
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x60], 0x85
mov dword [ebp - 0xa4], esi
mov dword [ebp - 0x98], 0
cmp dl, 0x3f
jne 0x51f04c
inc ebx
mov dword [ebp - 0x5c], ebx
mov dl, byte [ebx]
movzx eax, dl
add eax, 0xffffffdf
cmp eax, 0x5b
ja case.0x51e7e9.34
movzx eax, byte [eax + 0x52044c]
jmp dword [eax*4 + 0x520414]
mov dword [ebp - 0x98], 1
mov dword [edi + 0x7c], 1
mov ecx, 0x83
inc ebx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51eb6a
cmp byte [ebx + 1], 0x3f
mov ecx, 0x87
mov edx, ebx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0xd8], edx
jne 0x51e86a
cmp byte [ebx + 2], 0x43
jne 0x51e86a
mov al, byte [ebx + 3]
mov ecx, 3
cmp al, 0x30
jb 0x51e84d
nop word [eax + eax]
cmp al, 0x39
ja 0x51e84d
mov al, byte [ecx + ebx + 1]
inc ecx
cmp al, 0x30
jae 0x51e840
cmp byte [ecx + ebx], 0x29
jne 0x51e85e
lea edx, [ebx + 1]
add edx, ecx
mov dword [ebp - 0xd8], edx
cmp byte [edx], 0x28
jne 0x52000b
mov ecx, dword [ebp - 0x60]
cmp byte [edx + 1], 0x3f
jne 0x51e899
mov al, byte [edx + 2]
cmp al, 0x3d
je 0x51e88a
cmp al, 0x21
je 0x51e88a
cmp al, 0x3c
jne 0x51e899
mov al, byte [edx + 3]
cmp al, 0x3d
je 0x51e88a
cmp al, 0x21
jne 0x51e899
mov dword [edi + 0x80], 1
jmp 0x51eb6a
mov eax, dword [ebp - 0x58]
or esi, 0xffffffff
xor ecx, ecx
mov dword [ebp - 0x6c], 3
or edi, esi
mov dword [ebp - 0x74], ecx
xor edx, edx
mov byte [eax + 3], 0x8d
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x52
jne 0x51e8e0
cmp byte [ebx + 1], 0x26
jne 0x51e8e0
mov eax, dword [ebp - 0x58]
or ecx, esi
add ebx, 2
mov dword [ebp - 0x88], ecx
mov dword [ebp - 0x5c], ebx
mov byte [eax + 3], 0x8f
mov ebx, dword [ebp - 0x5c]
jmp 0x51e8f6
cmp al, 0x3c
jne 0x51e9ae
mov dword [ebp - 0x88], 0x3e
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x30
jb 0x51e904
cmp al, 0x39
jbe 0x52003c
mov ecx, dword [ebp - 0x64]
movzx eax, al
mov ecx, dword [ecx + 0xc]
test byte [eax + ecx], 0x10
je 0x52000b
mov dword [ebp - 0x74], ebx
inc ebx
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
test byte [eax + ecx], 0x10
je 0x51e934
inc ebx
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
test byte [eax + ecx], 0x10
jne 0x51e927
mov eax, dword [ebp - 0x6c]
mov edi, ebx
sub edi, dword [ebp - 0x74]
mov ecx, 5
cmp dword [ebp - 0x70], edx
cmovne eax, ecx
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x6c], eax
test ecx, ecx
jle 0x51e962
mov al, byte [ebx]
inc ebx
mov dword [ebp - 0x5c], ebx
cmp al, cl
jne 0x520069
mov ecx, dword [ebp - 0x74]
mov al, byte [ebx]
inc ebx
mov dword [ebp - 0x5c], ebx
cmp al, 0x29
jne 0x520069
cmp dword [ebp - 0x70], 0
jne 0x51eb64
test esi, esi
js 0x51ea68
test edx, edx
jle 0x52004a
mov edi, dword [ebp - 0x64]
test esi, esi
je 0x51ea32
cmp esi, 0x2d
jne 0x51ea2f
mov eax, dword [edi + 0x40]
sub eax, edx
lea edx, [eax + 1]
jmp 0x51ea32
cmp al, 0x27
jne 0x51e9c1
mov dword [ebp - 0x88], 0x27
jmp 0x51e8f2
mov dword [ebp - 0x88], ecx
cmp al, 0x2d
je 0x51e9e3
cmp al, 0x2b
je 0x51e9e3
cmp al, 0x30
jb 0x51e904
cmp al, 0x39
ja 0x51e8f6
xor esi, esi
jmp 0x51e9f2
movzx esi, al
inc ebx
mov dword [ebp - 0x5c], ebx
test esi, esi
js 0x51e8f6
mov al, byte [ebx]
cmp al, 0x30
jb 0x51e965
nop dword [eax]
cmp al, 0x39
ja 0x51e965
cmp edx, 0xccccccb
jg 0x520019
movzx eax, al
lea edx, [edx + edx*4]
inc ebx
lea edx, [edx - 0x18]
mov dword [ebp - 0x5c], ebx
lea edx, [eax + edx*2]
mov al, byte [ebx]
cmp al, 0x30
jae 0x51ea00
jmp 0x51e965
add edx, dword [edi + 0x40]
test edx, edx
jle 0x52005b
cmp edx, dword [edi + 0x44]
jg 0x52005b
mov ecx, dword [ebp - 0x58]
mov eax, edx
sar eax, 8
mov byte [ecx + 4], al
mov byte [ecx + 5], dl
mov ebx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
cmp edx, dword [edi + 0x4c]
jle 0x51eb6a
mov dword [edi + 0x4c], edx
jmp 0x51eb6a
mov eax, dword [ebp - 0x64]
xor esi, esi
mov edx, dword [eax + 0x2c]
mov dword [ebp - 0xc4], edx
cmp dword [eax + 0x30], esi
jle 0x51eabb
mov ebx, edx
nop dword [eax]
push edi
lea eax, [ebx + 2]
push eax
push ecx
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51ea98
cmp byte [ebx + edi + 2], al
je 0x51eaaf
mov eax, dword [ebp - 0x64]
inc esi
mov ecx, dword [ebp - 0x74]
add ebx, dword [eax + 0x34]
mov dword [ebp - 0xc4], ebx
cmp esi, dword [eax + 0x30]
jl 0x51ea80
jmp 0x51eab2
mov eax, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0xc4]
mov ecx, dword [eax + 0x30]
cmp esi, ecx
jge 0x51ebc5
mov eax, dword [ebp - 0xc4]
mov ebx, 1
movzx edx, byte [edx]
shl edx, 8
mov dword [ebp - 0xc0], esi
inc esi
movzx eax, byte [eax + 1]
or edx, eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0xec], edx
cmp edx, dword [eax + 0x4c]
jle 0x51eaf5
mov dword [eax + 0x4c], edx
cmp esi, ecx
jge 0x51ebb5
mov ecx, dword [ebp - 0xc4]
add ecx, dword [eax + 0x34]
push edi
mov dword [ebp - 0xc4], ecx
lea eax, [ecx + 2]
push eax
push dword [ebp - 0x74]
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51eb36
mov ecx, dword [ebp - 0xc4]
cmp byte [ecx + edi + 2], al
jne 0x51eb36
mov eax, dword [ebp - 0x64]
inc esi
inc ebx
cmp esi, dword [eax + 0x30]
jl 0x51eb03
cmp ebx, 1
jle 0x51ebaf
mov edx, dword [ebp - 0x58]
mov ecx, dword [ebp - 0xc0]
mov eax, ecx
add dword [ebp - 0x6c], 2
sar eax, 8
mov byte [edx + 4], al
mov eax, ebx
sar eax, 8
inc byte [edx + 3]
mov byte [edx + 5], cl
mov byte [edx + 6], al
mov byte [edx + 7], bl
mov ebx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x6c]
inc dword [edi + 0x58]
cmp dword [edi + 0x58], 0xfa
jg 0x52014d
lea eax, [ecx - 0x7d]
cmp eax, 3
ja 0x51f35a
cmp dword [edi + 0x80], 0
je 0x51f35a
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x78], 0
mov dword [edi + 0x80], 0
jmp 0x51f36c
mov edx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x58]
mov eax, edx
sar eax, 8
mov byte [ecx + 4], al
mov byte [ecx + 5], dl
jmp 0x51eb61
cmp dword [ebp - 0x88], 0
jne 0x52005b
mov eax, dword [ebp - 0x74]
cmp byte [eax], 0x52
jne 0x51ec36
xor ecx, ecx
lea edx, [ecx + 1]
cmp edi, edx
jle 0x51ec1a
mov al, byte [eax + edx]
cmp al, 0x30
jb 0x52005b
cmp al, 0x39
ja 0x52005b
cmp ecx, 0xccccccb
jg 0x52002e
movzx eax, al
lea ecx, [ecx + ecx*4]
lea ecx, [ecx - 0x18]
inc edx
lea ecx, [eax + ecx*2]
mov eax, dword [ebp - 0x74]
cmp edx, edi
jl 0x51ebe3
test ecx, ecx
jne 0x51ec1f
mov ecx, 0xffff
mov edx, dword [ebp - 0x58]
mov eax, ecx
sar eax, 8
mov byte [edx + 3], 0x8f
mov byte [edx + 4], al
mov byte [edx + 5], cl
jmp 0x51eb61
cmp edi, 6
jne 0x52005b
push edi
push str.DEFINE
push eax
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x520058
mov eax, dword [ebp - 0x58]
lea edx, [edi - 5]
mov ecx, dword [ebp - 0x60]
mov edi, dword [ebp - 0x64]
mov byte [eax + 3], 0x91
mov ebx, dword [ebp - 0x5c]
jmp 0x51eb6d
inc dword [edi + 0x5c]
mov ecx, 0x7d
inc ebx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51eb6a
inc ebx
mov dword [ebp - 0x5c], ebx
cmp byte [ebx], 0x29
jne 0x51ecd1
mov al, byte [ebx + 1]
cmp al, 0x2a
je 0x51ecd1
cmp al, 0x2b
je 0x51ecd1
cmp al, 0x3f
je 0x51ecd1
cmp al, 0x7b
jne 0x51ecae
lea eax, [ebx + 2]
push eax
call fcn.00521ef0
add esp, 4
test eax, eax
jne 0x51ecd1
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x78], 0
mov byte [edx], 0x9d
inc edx
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
inc dword [edi + 0x5c]
mov ecx, 0x7e
mov dword [ebp - 0x60], ecx
jmp 0x51eb6a
mov cl, byte [ebx + 1]
mov al, cl
cmp al, 0x21
je 0x51ee16
cmp al, 0x3d
je 0x51ee00
mov eax, dword [edi + 0xc]
movzx ecx, cl
test byte [ecx + eax], 0x10
je 0x520078
cmp dl, 0x3c
mov eax, 0x27
mov ecx, 0x3e
cmove eax, ecx
inc ebx
mov dword [ebp - 0xc0], eax
mov esi, ebx
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x88], esi
mov al, byte [ebx]
cmp al, 0x30
jb 0x51ed36
cmp al, 0x39
jbe 0x52003c
mov ecx, dword [edi + 0xc]
movzx eax, al
test byte [eax + ecx], 0x10
je 0x51ed4f
inc ebx
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
test byte [eax + ecx], 0x10
jne 0x51ed42
mov edx, ebx
sub edx, esi
cmp dword [ebp - 0x70], 0
mov dword [ebp - 0xa8], edx
je 0x51efe0
mov eax, dword [edi + 0x40]
inc eax
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xc0]
cmp byte [ebx], al
jne 0x5200f2
mov ecx, dword [edi + 0x30]
cmp ecx, 0x7530
jge 0x5200e4
lea eax, [edx + 3]
cmp eax, dword [edi + 0x34]
jle 0x51ed9e
mov dword [edi + 0x34], eax
cmp edx, 0x20
jg 0x5200a3
mov esi, dword [edi + 0x28]
xor edi, edi
test ecx, ecx
jle 0x51ef3a
nop dword [eax + eax]
cmp edx, dword [esi + 4]
jne 0x51ef12
push edx
push dword [esi]
push dword [ebp - 0x88]
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51ef12
mov eax, dword [ebp - 0x90]
cmp dword [esi + 8], eax
je 0x51ef37
test dword [ebp - 0x8c], 0x80000
je 0x5200b1
mov eax, dword [ebp - 0x64]
mov dword [eax + 0x78], 1
jmp 0x51ef24
inc dword [edi + 0x5c]
mov ecx, 0x7f
add ebx, 2
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51eb6a
inc dword [edi + 0x5c]
mov ecx, 0x80
add ebx, 2
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51eb6a
mov ecx, 0x81
inc ebx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51eb6a
mov edx, dword [ebp - 0x58]
xor ecx, ecx
mov eax, edx
mov dword [ebp - 0xfc], 1
mov dword [ebp - 0xdc], eax
mov byte [edx], 0x76
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x30
jb 0x51ee7e
cmp al, 0x39
ja 0x51ee7e
movzx eax, al
lea ecx, [ecx + ecx*4]
inc ebx
lea ecx, [ecx - 0x18]
mov dword [ebp - 0x5c], ebx
lea ecx, [eax + ecx*2]
mov al, byte [ebx]
cmp al, 0x30
jae 0x51ee64
cmp byte [ebx], 0x29
jne 0x520095
cmp ecx, 0xff
jg 0x520087
mov esi, dword [ebp - 0x70]
mov byte [edx + 1], cl
mov eax, dword [ebp - 0x5c]
sub eax, dword [edi + 0x18]
inc eax
mov dword [ebp - 0x78], 0
sar eax, 8
mov byte [edx + 2], al
mov al, byte [ebp - 0x5c]
sub al, byte [edi + 0x18]
inc al
mov word [edx + 4], 0
mov byte [edx + 3], al
add edx, 6
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
inc ebx
mov dword [ebp - 0x5c], ebx
mov dl, byte [ebx]
cmp dl, 0x3d
je 0x51eefa
cmp dl, 0x3e
je 0x51eefa
cmp dl, 0x3c
je case.0x51e7e9.39
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x29
jmp 0x52026e
xor ecx, ecx
cmp dl, 0x3e
mov edx, 0x29
sete cl
mov dword [ebp - 0x88], ecx
jmp 0x51f68b
mov eax, dword [ebp - 0x90]
cmp dword [esi + 8], eax
je 0x5200c2
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0xa8]
inc edi
add esi, 0xc
cmp edi, dword [eax + 0x30]
jl 0x51edb0
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x64]
mov eax, dword [eax + 0x30]
cmp edi, eax
mov edi, dword [ebp - 0x64]
jl 0x51efe0
mov ecx, dword [edi + 0x38]
cmp eax, ecx
jl 0x51efa2
lea edi, [ecx + ecx]
lea eax, [edi + edi*2]
shl eax, 2
push eax
call dword [0x5bee08]
mov esi, eax
add esp, 4
test esi, esi
je 0x5200d3
mov ebx, dword [ebp - 0x64]
mov ecx, dword [ebx + 0x38]
lea ecx, [ecx + ecx*2]
shl ecx, 2
push ecx
push dword [ebx + 0x28]
push esi
call fcn.004ae560
add esp, 0xc
cmp dword [ebx + 0x38], 0x14
jle 0x51ef9a
push dword [ebx + 0x28]
call dword [0x5bee0c]
add esp, 4
mov dword [ebx + 0x38], edi
mov edi, ebx
mov dword [ebx + 0x28], esi
mov eax, dword [edi + 0x30]
mov edx, dword [ebp - 0x88]
lea ecx, [eax + eax*2]
mov eax, dword [edi + 0x28]
mov dword [eax + ecx*4], edx
mov eax, dword [edi + 0x30]
mov edx, dword [ebp - 0xa8]
lea ecx, [eax + eax*2]
mov eax, dword [edi + 0x28]
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [edi + 0x30]
mov edx, dword [ebp - 0x90]
lea ecx, [eax + eax*2]
mov eax, dword [edi + 0x28]
mov dword [eax + ecx*4 + 8], edx
inc dword [edi + 0x30]
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x5c], ebx
inc dword [edi + 0x40]
mov edx, 2
mov ecx, dword [ebp - 0x58]
mov eax, dword [edi + 0x40]
shr eax, 8
mov byte [ecx + 3], al
mov al, byte [edi + 0x40]
mov byte [ecx + 4], al
mov ebx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
jmp 0x51eb6d
mov edx, 0x29
mov dword [ebp - 0x88], 1
jmp 0x51f68b
inc ebx
xor edx, edx
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x60], edx
cmp byte [ebx], 0x29
je 0x51f8b3
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x1d
jmp 0x52026e
mov dword [ebp - 0x98], 0x29
jmp 0x51f1a3
test ecx, 0x1000
je 0x51efe4
mov ecx, 0x83
mov dword [ebp - 0x60], ecx
jmp 0x51eb6a
mov esi, dword [ebp - 0x68]
lea eax, [ebp - 0x10c]
push 0
mov dword [ebp - 0xd8], ebx
mov ebx, dword [ebp - 0x8c]
push ebx
push dword [edi + 0x40]
push esi
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.0051abc0
add esp, 0x18
mov edx, eax
cmp dword [esi], 0
mov dword [ebp - 0x60], edx
jne 0x51ff46
test edx, edx
jne 0x51f0d0
cmp dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x10c]
je 0x51f0c3
cmp eax, 0x7f
jbe 0x51f0c3
lea ecx, [ebp - 0xc]
push ecx
push eax
call fcn.00535a30
add esp, 8
mov esi, eax
jmp 0x51c2cb
mov byte [ebp - 0xc], al
mov esi, 1
jmp 0x51c2cb
mov ecx, dword [ebp - 0x94]
cmp ecx, 0xfffffffe
jne 0x51f0ef
lea eax, [edx - 6]
cmp eax, 0x10
mov eax, 0xffffffff
cmovbe ecx, eax
mov dword [ebp - 0x94], ecx
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0xb0], eax
cmp edx, 0x1b
jne 0x51f642
mov ebx, dword [ebp - 0x5c]
mov ecx, 0x27
mov eax, dword [edi + 0x20]
inc ebx
sub eax, dword [edi + 0x10]
lea edx, [ebx + 1]
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0xa4], eax
mov eax, 0x3e
cmp byte [ebx], 0x3c
cmove ecx, eax
movzx eax, byte [edx]
mov dword [ebp - 0x98], ecx
cmp eax, 0x2b
je 0x51f17a
cmp eax, 0x2d
je 0x51f17a
cmp eax, 0x30
jb 0x51f165
cmp eax, 0x39
jbe 0x51f17a
mov edx, dword [ebp - 0x98]
mov dword [ebp - 0x88], 1
jmp 0x51f68b
mov al, byte [ebx + 2]
lea ecx, [ebx + 2]
cmp al, 0x30
jb 0x51f190
cmp al, 0x39
ja 0x51f190
mov al, byte [ecx + 1]
inc ecx
cmp al, 0x30
jae 0x51f184
mov eax, dword [ebp - 0x98]
cmp byte [ecx], al
jne 0x520193
mov ebx, edx
mov dword [ebp - 0x5c], ebx
mov dl, byte [ebx]
movzx esi, dl
cmp esi, 0x2b
jne 0x51f232
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x30
jb 0x520100
cmp al, 0x39
ja 0x520100
mov al, byte [ebx]
xor edx, edx
mov dword [ebp - 0x60], edx
cmp al, 0x30
jb 0x51f1fb
cmp al, 0x39
ja 0x51f1fb
cmp edx, 0xccccccb
jg 0x52015b
movzx eax, al
lea edx, [edx + edx*4]
inc ebx
lea edx, [edx - 0x18]
mov dword [ebp - 0x5c], ebx
lea edx, [eax + edx*2]
mov al, byte [ebx]
mov dword [ebp - 0x60], edx
cmp al, 0x30
jae 0x51f1d2
mov eax, dword [ebp - 0x98]
cmp byte [ebx], al
jne 0x51f02f
cmp esi, 0x2d
jne 0x51f626
test edx, edx
je 0x520185
mov eax, dword [edi + 0x40]
sub eax, edx
lea edx, [eax + 1]
mov dword [ebp - 0x60], edx
test edx, edx
jle 0x52005b
jmp 0x51f8b3
cmp esi, 0x2d
jne 0x51f1c7
mov al, byte [ebx + 1]
cmp al, 0x30
jb case.0x51e7e9.34
cmp al, 0x39
ja case.0x51e7e9.34
inc ebx
mov dword [ebp - 0x5c], ebx
jmp 0x51f1c7
xor eax, eax
lea ecx, [ebp - 0x90]
xor esi, esi
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x90], esi
cmp dl, 0x29
je 0x51f2df
nop word [eax + eax]
cmp dl, 0x3a
je 0x51f2d3
movzx eax, dl
inc ebx
sub eax, 0x2d
mov dword [ebp - 0x5c], ebx
cmp eax, 0x4b
ja case.0x51f28f.46
movzx eax, byte [eax + 0x5204cc]
jmp dword [eax*4 + 0x5204a8]
lea ecx, [ebp - 0x98]
jmp 0x51f2cc
or dword [ecx], 0x80000
or dword [edi + 0x64], 0x400
jmp 0x51f2cc
or dword [ecx], 1
jmp 0x51f2cc
or dword [ecx], 2
jmp 0x51f2cc
or dword [ecx], 4
jmp 0x51f2cc
or dword [ecx], 8
jmp 0x51f2cc
or dword [ecx], 0x200
jmp 0x51f2cc
or dword [ecx], 0x40
mov dl, byte [ebx]
cmp dl, 0x29
jne 0x51f270
mov esi, dword [ebp - 0x90]
mov eax, dword [ebp - 0x98]
or esi, dword [ebp - 0x8c]
not eax
and esi, eax
cmp byte [ebx], 0x29
mov dword [ebp - 0x84], esi
jne 0x51f33d
mov edx, dword [ebp - 0x58]
mov eax, esi
shr eax, 9
and eax, 1
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x118], eax
xor eax, 1
mov dword [ebp - 0x11c], eax
mov eax, esi
and eax, 1
mov dword [ebp - 0x78], 0
mov dword [ebp - 0xf4], eax
inc ebx
mov eax, dword [ebp - 0x138]
mov dword [ebp - 0x5c], ebx
mov dword [eax], esi
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
jmp 0x51c100
inc ebx
mov dword [ebp - 0x98], 0
mov ecx, 0x83
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x60], ecx
xor edx, edx
jmp 0x51eb6d
mov ebx, dword [edi + 0x20]
sub ebx, dword [edi + 0x10]
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0xa4], ebx
mov ebx, dword [ebp - 0x64]
mov byte [eax], cl
mov edi, dword [edi + 0x68]
mov dword [ebp - 0xac], eax
mov esi, dword [ebx + 0x40]
mov dword [ebp - 0xf0], 0
cmp ecx, 0x7f
je 0x51f398
cmp ecx, 0x80
je 0x51f398
xor ecx, ecx
jmp 0x51f39d
mov ecx, 1
cmp dword [ebp - 0x70], 0
lea eax, [ebp - 0xf0]
mov dword [ebp - 0xc0], 0
cmove eax, dword [ebp - 0xc0]
push eax
push ebx
push dword [ebp - 0x124]
mov ebx, dword [ebp - 0x60]
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0x120]
push eax
xor eax, eax
cmp ebx, 0x87
sete al
add eax, dword [ebp + 0x2c]
push eax
push edx
push dword [ebp - 0x98]
lea eax, [ebp - 0x5c]
push ecx
push dword [ebp - 0x68]
push eax
lea eax, [ebp - 0xac]
push eax
push dword [ebp - 0x84]
call fcn.00520520
add esp, 0x3c
test eax, eax
je 0x51ff46
mov eax, dword [ebp - 0x64]
dec dword [eax + 0x58]
cmp ebx, 0x81
jne 0x51f4a8
cmp dword [eax + 0x40], esi
ja 0x51f437
mov eax, dword [ebp - 0x58]
mov byte [eax], 0x82
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0x100]
mov ebx, dword [ebp - 0x5c]
cmp byte [ebx], 0x29
jne 0x52013f
mov esi, dword [ebp - 0x70]
test esi, esi
je 0x51f52e
mov edx, dword [esi]
mov esi, dword [ebp - 0xf0]
mov ecx, dword [ebp - 0xe8]
sub ecx, edx
lea eax, [esi - 6]
cmp ecx, eax
jl 0x51ff18
mov edi, dword [ebp - 0x64]
lea eax, [esi - 6]
mov esi, dword [ebp - 0x70]
add eax, edx
mov edx, dword [ebp - 0x58]
mov dword [esi], eax
mov eax, dword [ebp - 0x7c]
mov dword [edx + 1], 0x780300
mov byte [edx + 5], 3
add edx, 6
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
cmp ebx, 0x7d
jl 0x51f4b8
cmp ebx, 0x80
jg 0x51f4b8
dec dword [eax + 0x5c]
cmp ebx, 0x87
jne 0x51f437
cmp dword [ebp - 0x70], 0
jne 0x51f437
mov ebx, dword [ebp - 0x58]
xor esi, esi
mov edx, ebx
movzx ecx, byte [edx + 1]
inc esi
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
add edx, ecx
cmp byte [edx], 0x78
jne 0x51f4d5
cmp byte [ebx + 3], 0x91
jne 0x51f503
cmp esi, 1
jg 0x52011d
mov edx, 0x91
jmp 0x51f43a
cmp esi, 2
jg 0x52012e
cmp esi, 1
jne 0x51f437
mov edx, dword [ebp - 0x60]
or eax, 0xffffffff
or ecx, eax
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0x100], ecx
jmp 0x51f446
mov esi, dword [ebp - 0xac]
mov dword [ebp - 0x58], esi
cmp edx, 0x91
je 0x51f604
mov esi, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], esi
mov esi, dword [ebp - 0xb4]
mov dword [ebp - 0xb0], esi
mov esi, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], esi
mov esi, dword [ebp - 0x94]
mov dword [ebp - 0xc8], esi
mov dword [ebp - 0x104], 0
cmp edx, 0x81
jl 0x51f619
cmp esi, 0xfffffffe
jne 0x51f5d0
test ecx, ecx
js 0x51f5ba
mov edx, dword [ebp - 0x120]
mov dword [ebp - 0xd0], edx
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x104], 1
mov dword [ebp - 0xc8], 0xffffffff
jmp 0x51f5ee
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0xc8], 0xffffffff
jmp 0x51f5ee
test ecx, ecx
js 0x51f5ee
test eax, eax
jns 0x51f5f2
mov eax, dword [ebp - 0x120]
mov dword [ebp - 0x110], eax
mov eax, ecx
or eax, edi
mov dword [ebp - 0xf8], eax
test eax, eax
js 0x51f604
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0xb8], ecx
mov dword [ebp - 0xb4], eax
mov edi, dword [ebp - 0x64]
inc ebx
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
cmp edx, 0x7d
jne 0x51f604
test eax, eax
js 0x51f604
test ecx, ecx
jmp 0x51f5f0
cmp esi, 0x2b
jne 0x51f8b3
test edx, edx
je 0x520185
add edx, dword [edi + 0x40]
mov dword [ebp - 0x60], edx
jmp 0x51f8b3
cmp edx, 0x1c
jne 0x51faec
mov ebx, dword [ebp - 0x5c]
mov al, byte [ebx + 1]
cmp al, 0x3c
je 0x51f661
cmp al, 0x27
je 0x51f661
cmp al, 0x7b
jne 0x52019e
inc ebx
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x3c
jne 0x51f67c
mov edx, 0x3e
jmp 0x51f68b
cmp al, 0x27
mov edx, 0x7d
mov eax, 0x27
cmove edx, eax
inc ebx
mov dword [ebp - 0x5c], ebx
mov esi, ebx
mov dword [ebp - 0xc0], esi
mov al, byte [ebx]
cmp al, 0x30
jb 0x51f6a5
cmp al, 0x39
jbe 0x52003c
mov ecx, dword [edi + 0xc]
movzx eax, al
test byte [eax + ecx], 0x10
je 0x51f6be
inc ebx
mov dword [ebp - 0x5c], ebx
movzx eax, byte [ebx]
test byte [eax + ecx], 0x10
jne 0x51f6b1
mov edi, ebx
sub edi, esi
cmp dword [ebp - 0x70], 0
je 0x51f7aa
xor ecx, ecx
mov dword [ebp - 0x60], ecx
test edi, edi
je 0x5201a9
cmp byte [ebx], dl
jne 0x5200f2
cmp edi, 0x20
jg 0x5200a3
mov edx, dword [ebp - 0x64]
cmp dword [ebp - 0x88], ecx
jne 0x51f6f8
inc dword [edx + 0x54]
mov ecx, dword [ebp - 0x70]
add dword [ecx], 0xe
cmp dword [edx + 0x7c], 0
je 0x51f707
add dword [ecx], 0xc
cmp dword [edx + 0x30], 0
mov esi, dword [edx + 0x28]
mov dword [ebp - 0xa4], 0
jle 0x51f82d
mov ebx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0x64]
nop dword [eax]
cmp edi, dword [esi + 4]
jne 0x51f7a5
push edi
push dword [esi]
push ebx
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51f7a0
mov edx, dword [esi + 8]
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x88], eax
jne 0x51f8b0
mov eax, dword [ebp - 0x64]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x51f773
movzx eax, word [ecx + 4]
cmp eax, edx
je 0x51f795
mov ecx, dword [ecx]
test ecx, ecx
jne 0x51f765
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0xa4]
inc eax
add esi, 0xc
mov dword [ebp - 0xa4], eax
cmp eax, dword [ecx + 0x30]
jl 0x51f730
mov ecx, dword [ebp - 0x70]
mov esi, eax
jmp 0x51f832
mov eax, 1
mov word [ecx + 6], ax
jmp 0x51f773
mov edx, dword [ebp - 0x60]
jmp 0x51f773
mov edx, dword [ebp - 0x60]
jmp 0x51f77c
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0xa4], 0
cmp dword [eax + 0x30], 0
mov ecx, dword [eax + 0x2c]
mov dword [ebp - 0xc4], ecx
jle 0x51f807
mov ebx, ecx
push edi
lea eax, [ebx + 2]
push eax
push esi
call fcn.004c00a0
add esp, 0xc
test eax, eax
jne 0x51f7e0
cmp byte [ebx + edi + 2], al
je 0x51f7f8
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0xa4]
inc eax
mov dword [ebp - 0xa4], eax
add ebx, dword [ecx + 0x34]
cmp eax, dword [ecx + 0x30]
jl 0x51f7c8
mov dword [ebp - 0xc4], ebx
mov ebx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0xc4]
mov edi, dword [ebp - 0x64]
mov esi, dword [ebp - 0xa4]
cmp esi, dword [edi + 0x30]
jge 0x52005b
movzx edx, byte [ecx]
movzx eax, byte [ecx + 1]
mov ecx, dword [ebp - 0x70]
shl edx, 8
or edx, eax
mov dword [ebp - 0x60], edx
jmp 0x51f835
mov edx, dword [ebp - 0x60]
xor esi, esi
mov edi, dword [ebp - 0x64]
cmp dword [ebp - 0x88], 0
jne 0x51f8b3
test ecx, ecx
jne 0x51fb00
cmp dword [edi + 0x78], ecx
je 0x51fb00
mov eax, dword [ebp - 0xc4]
lea ebx, [ecx + 1]
mov ecx, dword [edi + 0x34]
mov edi, dword [edi + 0x30]
add ecx, eax
mov dword [ebp - 0xec], esi
inc esi
mov dword [ebp - 0x90], ecx
cmp esi, edi
jge 0x51fafd
add eax, 2
mov dword [ebp - 0xc0], eax
add ecx, 2
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x51f9e1
test dl, dl
je 0x51f8a9
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x51f9e1
add eax, 2
add ecx, 2
test dl, dl
jne 0x51f885
xor eax, eax
jmp 0x51f9e6
mov edi, dword [ebp - 0x64]
mov esi, dword [edi + 0x20]
sub esi, dword [edi + 0x10]
mov ecx, dword [ebp - 0x58]
mov ebx, dword [edi + 0x14]
mov dword [ebp - 0xa4], esi
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0x78], ecx
test esi, esi
jne 0x51f982
mov esi, dword [ebp - 0x9c]
mov byte [ecx], 0
test edx, edx
je 0x51f8f2
push edx
push esi
push dword [edi + 0x14]
call fcn.00519e30
mov edx, dword [ebp - 0x60]
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x51f94c
cmp edx, dword [edi + 0x44]
jg 0x5201b7
mov eax, dword [edi + 0x10]
mov ebx, dword [edi + 0x14]
add eax, 0xffffff9c
add eax, dword [edi + 0x3c]
add ebx, edx
cmp dword [edi + 0x20], eax
jb 0x51f928
push edi
call fcn.00520e10
mov ecx, dword [ebp - 0x68]
add esp, 4
mov dword [ecx], eax
test eax, eax
jne 0x51ff46
mov edx, dword [ebp - 0x58]
mov ecx, edx
sub ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x20]
inc ecx
sar ecx, 8
mov byte [eax], cl
mov cl, dl
sub cl, byte [edi + 0x14]
mov eax, dword [edi + 0x20]
inc cl
mov byte [eax + 1], cl
add dword [edi + 0x20], 2
jmp 0x51f97c
movzx ecx, byte [ebx + 1]
movzx eax, byte [ebx + 2]
shl ecx, 8
or ecx, eax
jne 0x51f97c
cmp dword [ebp + 0x2c], ecx
jg 0x51f97c
push edi
push esi
push dword [ebp - 0x124]
push dword [ebp - 0x58]
push ebx
call fcn.00520950
add esp, 0x14
test eax, eax
jne 0x5201c8
mov esi, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x58]
mov byte [ecx], 0x75
mov eax, ebx
sub eax, dword [edi + 0x14]
sar eax, 8
mov byte [ecx + 1], al
mov eax, 0xffffffff
sub bl, byte [edi + 0x14]
mov byte [ecx + 2], bl
add ecx, 3
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x94]
cmp ecx, 0xfffffffe
mov edx, dword [ebp - 0x58]
cmove ecx, eax
mov dword [ebp - 0x104], 0
mov eax, dword [ebp - 0xd0]
inc ebx
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
sbb eax, eax
or eax, 1
test eax, eax
jne 0x51fa0c
mov eax, dword [ebp - 0x64]
inc esi
mov ecx, dword [ebp - 0x90]
inc ebx
add ecx, dword [eax + 0x34]
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0x90], ecx
cmp esi, edi
jl 0x51f882
mov edi, dword [ebp - 0x64]
cmp ebx, 1
jle 0x51faf8
mov eax, dword [ebp - 0x94]
mov ecx, 0xffffffff
mov edx, dword [ebp - 0x58]
cmp eax, 0xfffffffe
mov esi, dword [ebp - 0x90]
cmove eax, ecx
mov dword [ebp - 0x78], edx
mov ecx, dword [ebp - 0xec]
mov dword [ebp - 0x94], eax
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
test byte [ebp - 0x8c], 1
mov dword [ebp - 0xa4], eax
setne al
add al, 0x73
mov byte [edx], al
mov eax, ecx
shr eax, 8
mov byte [edx + 1], al
mov eax, ebx
mov byte [edx + 2], cl
sar eax, 8
mov byte [edx + 4], bl
mov ebx, dword [ebp - 0xc4]
mov byte [edx + 3], al
add edx, 5
mov dword [ebp - 0x58], edx
cmp ebx, esi
jae 0x51ff06
movzx edx, byte [ebx]
movzx eax, byte [ebx + 1]
shl edx, 8
or edx, eax
mov eax, 1
cmp edx, 0x20
jge 0x51fa9f
mov ecx, edx
shl eax, cl
or dword [edi + 0x50], eax
cmp edx, dword [edi + 0x4c]
jle 0x51faaa
mov dword [edi + 0x4c], edx
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x51faca
movzx eax, word [ecx + 4]
cmp eax, edx
je 0x51fac1
mov ecx, dword [ecx]
test ecx, ecx
jne 0x51fab1
jmp 0x51faca
mov eax, 1
mov word [ecx + 6], ax
add ebx, dword [edi + 0x34]
cmp ebx, esi
jb 0x51fa85
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xc4], ebx
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
test edx, edx
jns 0x51fbbd
neg edx
jmp 0x51fb0c
mov edx, dword [ebp - 0x60]
jmp 0x51fb00
mov edi, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x94]
mov ebx, dword [ebp - 0x8c]
cmp ecx, 0xfffffffe
jne 0x51fb25
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0xc8], 0xffffffff
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
test bl, 1
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0xa4], eax
setne al
add al, 0x71
mov dword [ebp - 0x78], ecx
mov byte [ecx], al
mov eax, edx
sar eax, 8
mov byte [ecx + 1], al
mov byte [ecx + 2], dl
add ecx, 3
mov dword [ebp - 0x58], ecx
cmp edx, 0x20
jge 0x51fb64
mov ebx, 1
mov ecx, edx
mov eax, ebx
shl eax, cl
jmp 0x51fb6b
mov eax, 1
mov ebx, eax
or dword [edi + 0x50], eax
cmp edx, dword [edi + 0x4c]
jle 0x51fb76
mov dword [edi + 0x4c], edx
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x51d589
movzx eax, word [ecx + 4]
cmp eax, edx
je 0x51fba4
mov ecx, dword [ecx]
test ecx, ecx
jne 0x51fb81
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
inc ebx
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov word [ecx + 6], bx
mov ebx, dword [ebp - 0x5c]
inc ebx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
cmp edx, 0xf
je 0x51fc5b
cmp edx, 0x10
je 0x51fc5b
cmp edx, 5
je 0x51fbde
cmp edx, 4
je 0x51fbde
cmp edx, 1
jne 0x51fbeb
cmp dword [edi + 0x48], 0
jne 0x51fbeb
mov dword [edi + 0x48], 1
lea ebx, [edx - 0x1d]
cmp ebx, 5
ja 0x51fc11
mov ebx, dword [ebx*4 + 0x5bed80]
mov eax, dword [ebp - 0x5c]
dec ebx
mov edx, dword [ebp - 0x58]
inc eax
mov esi, dword [ebp - 0x70]
inc ebx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov ecx, dword [ebp - 0x58]
lea eax, [edx - 6]
xor esi, esi
cmp eax, 0x10
cmovbe esi, ecx
mov dword [ebp - 0x78], esi
mov esi, dword [edi + 0x20]
sub esi, dword [edi + 0x10]
cmp dword [ebp - 0x9c], 0
mov dword [ebp - 0xa4], esi
jne 0x51fc41
cmp edx, 0xe
jne 0x51fc41
mov edx, 0xd
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x7c]
mov byte [ecx], dl
inc ecx
mov ebx, dword [ebp - 0x5c]
mov edx, ecx
inc ebx
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
push esi
lea eax, [ebp - 0x98]
mov dword [ebp - 0x90], 0
push eax
lea eax, [ebp - 0x90]
mov dword [ebp - 0x98], 0
push eax
lea eax, [ebp - 0x13c]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00521c20
add esp, 0x14
test eax, eax
je 0x51ff46
mov esi, dword [edi + 0x20]
xor eax, eax
sub esi, dword [edi + 0x10]
cmp dword [ebp - 0x60], 0x10
mov edx, dword [ebp - 0x58]
sete al
mov dword [ebp - 0x78], edx
cmp eax, dword [ebp - 0x13c]
mov dword [ebp - 0xa4], esi
mov esi, dword [ebp - 0x70]
setne al
add al, 0xf
mov byte [edx], al
movzx eax, byte [ebp - 0x90]
mov byte [edx + 1], al
movzx eax, byte [ebp - 0x98]
mov byte [edx + 2], al
add edx, 3
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x7c]
inc ebx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
movzx ecx, byte [ebp - 0xb]
movzx eax, byte [ebp - 0xa]
and ecx, 0x3f
test dl, 0x10
jne 0x51fd0a
and edx, 0xf
shl edx, 6
or edx, ecx
jmp 0x51fd72
and eax, 0x3f
test dl, 8
jne 0x51fd25
and edx, 7
shl edx, 6
or edx, ecx
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 9]
jmp 0x51fd72
test dl, 4
jne 0x51fd49
and edx, 3
shl edx, 6
or edx, ecx
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 9]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 8]
jmp 0x51fd72
and edx, 1
shl edx, 6
or edx, ecx
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 9]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 8]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [ebp - 7]
mov ecx, dword [ebp - 0x58]
and eax, 0x3f
shl edx, 6
or edx, eax
mov eax, edx
test eax, eax
jns 0x51fd86
add eax, 0x7f
sar eax, 7
movzx eax, byte [eax + 0x591198]
shl eax, 7
and edx, 0x8000007f
jns 0x51fda0
dec edx
or edx, 0xffffff80
inc edx
add eax, edx
movzx eax, word [eax*2 + 0x593398]
movzx eax, byte [eax*8 + 0x58fb1b]
test eax, eax
je 0x51fdf9
mov word [ecx], 0x910
mov byte [ecx + 2], al
add ecx, 3
cmp dword [ebp - 0x94], 0xfffffffe
mov edx, ecx
mov dword [ebp - 0x58], ecx
jne 0x51ff06
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x70]
inc ebx
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xc8], 0xffffffff
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
test bl, 1
setne al
add al, 0x1d
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x58], ecx
xor ecx, ecx
mov edx, dword [ebp - 0x58]
test esi, esi
je 0x51fe1f
mov al, byte [ebp + ecx - 0xc]
inc ecx
mov byte [edx], al
inc edx
cmp ecx, esi
jb 0x51fe10
mov dword [ebp - 0x58], edx
mov al, byte [ebp - 0xc]
cmp al, 0xd
je 0x51fe2a
cmp al, 0xa
jne 0x51fe31
or dword [edi + 0x64], 0x800
mov ecx, dword [ebp - 0x94]
cmp ecx, 0xfffffffe
jne 0x51feb5
mov ecx, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], ecx
mov ecx, dword [ebp - 0xb4]
mov dword [ebp - 0xc8], 0xffffffff
mov dword [ebp - 0xb0], ecx
cmp esi, 1
je 0x51fe96
cmp dword [ebp - 0xf4], 0
je 0x51fe96
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x70]
inc ebx
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xb4], 0xffffffff
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
movzx eax, al
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xf4]
mov dword [ebp - 0x94], eax
cmp esi, 1
je 0x51ff06
mov ecx, dword [edi + 0x68]
jmp 0x51fef6
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xc8], ecx
mov ecx, dword [ebp - 0xb4]
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xb0], ecx
cmp esi, 1
je 0x51feed
cmp dword [ebp - 0xf4], 0
jne 0x51ff06
mov ecx, dword [edi + 0x68]
or ecx, dword [ebp - 0xf4]
movzx eax, byte [edx - 1]
mov dword [ebp - 0xb4], ecx
mov dword [ebp - 0xb8], eax
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x70]
inc ebx
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x5c], ebx
jmp 0x51c100
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x14
jmp 0x52026e
add ecx, dword [edi + 0x10]
cmp edx, ecx
mov ecx, dword [ebp - 0x68]
sbb eax, eax
and eax, 0x23
add eax, 0x34
mov dword [ecx], eax
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x1e
mov ebx, dword [ebp - 0x5c]
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x1f
jmp 0x52026e
mov dword [ecx], 7
jmp 0x52026e
mov ebx, dword [ebp - 0x5c]
mov dword [ecx], 0x47
jmp 0x52026e
mov dword [edi], 0x53
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x53
jmp 0x52026e
mov dword [edi], 8
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 6
jmp 0x52026e
cmp byte [ebx + 1], 0x3a
mov ecx, 0xd
mov eax, 0x1f
cmove eax, ecx
mov ecx, dword [ebp - 0x68]
mov dword [ecx], eax
jmp 0x52026e
mov dword [edx], 9
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x4b
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x3b
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x42
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3c
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x1c
jmp 0x52026e
mov al, byte [ebx]
cmp al, 0x30
jb 0x52002e
nop
cmp al, 0x39
ja 0x52002e
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x30
jae 0x520020
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3d
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x54
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x23
jmp 0x52026e
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x68]
mov dword [eax], 0xf
jmp 0x52026e
mov eax, dword [ebp - 0x68]
dec ebx
mov dword [eax], 0x1a
jmp 0x52026e
mov eax, dword [ebp - 0x68]
inc ebx
mov dword [eax], 0x18
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x26
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x27
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x30
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x2b
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x41
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x15
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x31
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x2a
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3f
jmp 0x52026e
mov eax, dword [ebp - 0x68]
dec ebx
mov dword [eax], 0xc
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x36
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x1b
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0xe
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x52
jmp 0x52026e
mov al, byte [ebx]
cmp al, 0x30
jb 0x52002e
cmp al, 0x39
ja 0x52002e
inc ebx
mov dword [ebp - 0x5c], ebx
mov al, byte [ebx]
cmp al, 0x30
jae 0x520165
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3d
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3a
jmp 0x52026e
mov dword [esi], 0x39
jmp 0x52026e
mov dword [esi], 0x45
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x3e
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0xf
jmp 0x52026e
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
mov dword [eax], 0x28
jmp 0x52026e
mov ecx, dword [ebp - 0x154]
mov eax, dword [ebp - 0xd0]
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x70]
mov dword [ecx], eax
mov ecx, dword [ebp - 0x144]
mov eax, dword [ebp - 0x94]
mov dword [ecx], eax
mov ecx, dword [ebp - 0x148]
mov eax, dword [ebp - 0xb8]
mov dword [ecx], eax
mov ecx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0xb4]
mov dword [ecx], eax
mov eax, dword [ebp - 0x150]
mov dword [eax], edx
mov eax, dword [ebp - 0x128]
mov dword [eax], ebx
test esi, esi
je 0x52024f
mov ecx, dword [esi]
mov eax, edx
mov edi, dword [ebp - 0x108]
sub eax, edi
sub dword [ebp - 0xe8], ecx
cmp dword [ebp - 0xe8], eax
jl 0x51ff18
sub ecx, edi
add ecx, edx
mov dword [esi], ecx
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004951c6
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x68]
mov dword [eax], 0x34
mov eax, dword [ebp - 0x128]
mov ecx, dword [ebp - 4]
pop edi
pop esi
mov dword [eax], ebx
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.004951c6
mov esp, ebp
pop ebp
ret