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

Disassembly:
sub esp, 0x114
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x150]
mov eax, dword [esp + 0x128]
mov ecx, dword [eax]
mov eax, dword [esp + 0x12c]
mov ebp, dword [eax]
mov eax, dword [esp + 0x130]
mov esi, dword [eax]
mov eax, ecx
shr eax, 0xb
and eax, 1
mov dword [esp + 0x38], eax
xor edx, edx
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0xe8], eax
xor eax, 1
mov dword [esp + 0xf0], eax
mov eax, 0xfffffffe
mov dword [esp + 0x60], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x34], eax
mov eax, ecx
and eax, 1
mov dword [esp + 0x54], edx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x44], ecx
mov dword [esp + 0xd8], edx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0xac], ebp
mov dword [esp + 0xe4], ebp
mov dword [esp + 0x6c], edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x88], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x64], edx
mov dword [esp + 0x58], edx
mov dword [esp + 0x98], edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0xa4], eax
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
test ebx, ebx
jne 0x52d93a
mov eax, dword [esp + 0x88]
test eax, eax
je 0x52d93a
mov esi, eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x88], ebx
movzx ebx, byte [esi]
mov eax, dword [esp + 0x154]
test eax, eax
je 0x52d9fe
mov ecx, dword [edi + 0x3c]
mov edx, dword [edi + 0x10]
lea ecx, [ecx + edx - 0x64]
cmp ebp, ecx
ja 0x531980
mov ecx, dword [esp + 0xac]
cmp ebp, ecx
jae 0x52d96c
mov dword [esp + 0x14], ecx
mov ebp, ecx
mov eax, dword [eax]
mov edx, ebp
sub edx, ecx
mov ecx, 0x7fffffeb
sub ecx, eax
cmp ecx, edx
jl 0x5319a5
sub eax, dword [esp + 0xac]
mov edx, dword [esp + 0x154]
add eax, ebp
mov dword [edx], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x52d9e1
cmp eax, dword [esp + 0xe4]
jbe 0x52d9ee
mov esi, dword [esp + 0xe4]
mov edi, eax
mov ecx, ebp
sub ecx, edi
mov eax, esi
call fcn.0052a710
mov eax, esi
sub eax, edi
mov edi, dword [esp + 0x150]
add ebp, eax
mov eax, dword [esp + 0x154]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x14], ebp
mov dword [esp + 0xac], ebp
jmp 0x52da0d
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x14], ecx
mov ebp, ecx
mov eax, dword [esp + 0x154]
mov dword [esp + 0xac], ebp
jmp 0x52da0d
mov edx, dword [edi + 0x3c]
add edx, dword [edi + 0x10]
cmp dword [edi + 0x20], edx
ja 0x5319ca
cmp dword [esp + 0x6c], 0
je 0x52db5a
test ebx, ebx
je 0x52db5a
cmp ebx, 0x5c
jne 0x52da3e
cmp byte [esi + 1], 0x45
jne 0x52da3e
add esi, 1
mov dword [esp + 0x6c], 0
add esi, 1
jmp 0x52d914
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0x52da76
test eax, eax
jne 0x52da6b
xor edx, edx
mov dh, byte [ecx + 2]
mov eax, esi
mov dl, byte [ecx + 3]
sub eax, edx
sub eax, dword [edi + 0x18]
mov edx, eax
sar edx, 8
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x90], 0
test dword [esp + 0x44], 0x4000
je case.0x52dd4c.1
mov byte [ebp], 0x76
mov byte [ebp + 1], 0xff
mov ecx, esi
lea eax, [ebp + 1]
mov edx, ecx
sub edx, dword [edi + 0x18]
add eax, 1
sar edx, 8
mov byte [eax], dl
sub cl, byte [edi + 0x18]
mov byte [eax + 2], 0
mov byte [eax + 1], cl
mov byte [eax + 3], 0
mov esi, dword [esp + 0x10]
add eax, 4
mov dword [esp + 0x90], ebp
mov dword [esp + 0x14], eax
mov ebp, eax
cmp dword [esp + 0x38], 0
mov ecx, 1
mov byte [esp + 0x80], bl
je 0x52db01
cmp ebx, 0xc0
jb 0x52db01
mov dl, byte [esi + ecx]
add esi, ecx
and dl, 0xc0
cmp dl, 0x80
jne 0x52db01
mov dword [esp + 0x10], esi
mov al, byte [esi]
add esi, 1
mov byte [esp + ecx + 0x80], al
mov dl, byte [esi]
and dl, 0xc0
add ecx, 1
cmp dl, 0x80
je 0x52dae4
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
cmp dword [esp + 0x38], 0
mov dword [esp + 0x18], ebp
mov dword [esp + 0x64], eax
je 0x531842
test byte [esp + 0x44], 1
je 0x531847
movzx ebx, byte [esp + 0x80]
cmp ebx, 0xc0
jb 0x5317cc
test bl, 0x20
jne 0x531713
movzx eax, byte [esp + 0x81]
and ebx, 0x1f
and eax, 0x3f
shl ebx, 6
or ebx, eax
jmp 0x5317cc
mov eax, dword [esp + 0x44]
and eax, 8
mov dword [esp + 0x48], eax
je 0x52dc44
jmp 0x52db70
mov eax, dword [edi + 0xc]
test byte [ebx + eax], 1
je 0x52db90
lea esp, [esp]
add esi, 1
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
test byte [eax + ebx], 1
jne 0x52db80
cmp ebx, 0x23
jne 0x52dc44
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x52dbdd
mov ecx, dword [edi + 0x84]
test ecx, ecx
je 0x52dbe2
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x52dc09
mov edx, dword [esp + 0x38]
push edx
lea edx, [edi + 0x88]
push edx
push eax
push ecx
push esi
call fcn.00542d60
test eax, eax
mov esi, dword [esp + 0x10]
je 0x52dc09
add esi, dword [edi + 0x88]
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
jmp 0x52db70
mov ecx, dword [edi + 0x88]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x52dc09
cmp al, byte [edi + 0x8c]
jne 0x52dc09
cmp ecx, 1
je 0x52dbd3
mov al, byte [esi + 1]
cmp al, byte [edi + 0x8d]
je 0x52dbd3
add esi, 1
cmp dword [esp + 0x38], 0
mov dword [esp + 0x10], esi
je 0x52dc32
mov cl, byte [esi]
and cl, 0xc0
cmp cl, 0x80
jne 0x52dc32
add esi, 1
mov dword [esp + 0x10], esi
mov dl, byte [esi]
and dl, 0xc0
cmp dl, 0x80
je 0x52dc21
mov al, byte [esi]
test al, al
jne 0x52dba6
movzx ebx, al
jmp 0x52db70
cmp ebx, 0x2a
je 0x52dd53
cmp ebx, 0x2b
je 0x52dd53
cmp ebx, 0x3f
je 0x52dd53
cmp ebx, 0x7b
jne 0x52dc74
lea eax, [esi + 1]
call fcn.0052a7e0
test eax, eax
jne 0x52dd53
xor ecx, ecx
cmp dword [esp + 0x90], ecx
mov dword [esp + 0x24], ecx
je 0x52dce5
cmp dword [esp + 0x88], ecx
jne 0x52dce5
mov eax, dword [esp + 0xd8]
mov edx, eax
sub eax, 1
test edx, edx
mov dword [esp + 0xd8], eax
jg 0x52dce5
cmp dword [esp + 0x154], ecx
jne 0x52dcda
mov eax, dword [esp + 0x90]
xor edx, edx
mov dh, byte [eax + 2]
mov dl, byte [eax + 3]
mov eax, esi
mov esi, dword [esp + 0x90]
sub eax, edx
sub eax, dword [edi + 0x18]
mov edx, eax
sar edx, 8
mov byte [esi + 4], dl
mov edx, esi
mov byte [edx + 5], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x90], 0
test dword [esp + 0x44], 0x4000
je 0x52dd3c
test ecx, ecx
jne 0x52dd3c
cmp dword [esp + 0x88], ecx
jne 0x52dd3c
mov byte [ebp], 0x76
mov byte [ebp + 1], 0xff
mov ecx, esi
lea eax, [ebp + 1]
mov edx, ecx
sub edx, dword [edi + 0x18]
add eax, 1
sar edx, 8
mov byte [eax], dl
sub cl, byte [edi + 0x18]
mov byte [eax + 2], 0
mov byte [eax + 1], cl
mov ecx, dword [esp + 0x24]
mov byte [eax + 3], 0
mov esi, dword [esp + 0x10]
add eax, 4
mov dword [esp + 0x90], ebp
mov dword [esp + 0x14], eax
mov ebp, eax
cmp ebx, 0x7c
ja case.0x52dd4c.1
movzx eax, byte [ebx + 0x5321fc]
jmp dword [eax*4 + 0x5321c8]
mov ecx, 1
mov dword [esp + 0x24], ecx
jmp 0x52dce5
test byte [esp + 0x44], 2
mov dword [esp + 0x18], 0
je 0x52dd96
cmp dword [esp + 0x34], 0xfffffffe
jne 0x52dd7f
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x7c], eax
mov byte [ebp], 0x1c
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
mov byte [ebp], 0x1b
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
test byte [esp + 0x44], 2
mov dword [esp + 0x18], 0
setne cl
add cl, 0x19
mov byte [ebp], cl
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x52dde6
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
shr edx, 2
and dl, 1
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
or dl, 0xc
mov byte [ebp], dl
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], ebp
add ebp, 1
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
test dword [edi + 0x60], 0x2000000
je case.0x52dd4c.1
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x40
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ebx, 6
lea eax, [esi + 1]
mov ecx, str._:_:__
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x52dea4
test dl, dl
je 0x52deae
add eax, 1
add ecx, 1
sub ebx, 1
jne 0x52de75
add esi, 7
mov dword [esp + 0x88], esi
mov esi, str._b__w_
sub esi, 1
add esi, 1
jmp 0x52d914
movzx ecx, byte [ecx]
movzx eax, byte [eax]
sub eax, ecx
jne 0x52dec8
add esi, 7
mov dword [esp + 0x88], esi
mov esi, str._b__w_
sub esi, 1
add esi, 1
jmp 0x52d914
mov ebx, 6
lea eax, [esi + 1]
mov ecx, 0x5682bc
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x52df04
test dl, dl
je 0x52df0e
add eax, 1
add ecx, 1
sub ebx, 1
jne 0x52ded5
add esi, 7
mov dword [esp + 0x88], esi
mov esi, str._b___w_
sub esi, 1
add esi, 1
jmp 0x52d914
movzx edx, byte [ecx]
movzx eax, byte [eax]
sub eax, edx
jne 0x52df28
add esi, 7
mov dword [esp + 0x88], esi
mov esi, str._b___w_
sub esi, 1
add esi, 1
jmp 0x52d914
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x64], eax
mov al, byte [esi + 1]
cmp al, 0x3a
je 0x52df45
cmp al, 0x2e
je 0x52df45
cmp al, 0x3d
jne 0x52df60
lea eax, [esp + 0x8c]
push eax
mov eax, esi
call fcn.0052d260
test eax, eax
mov esi, dword [esp + 0x10]
jne 0x531a78
xor ecx, ecx
mov dword [esp + 0x50], ecx
add esi, 1
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
cmp ebx, 0x5c
mov dword [esp + 0x20], ebx
jne 0x52dfd3
cmp byte [esi + 1], 0x45
lea eax, [esi + 1]
jne 0x52df86
mov esi, eax
jmp 0x52df66
mov edx, 3
mov edi, 0x5682b8
mov cl, byte [eax]
cmp cl, byte [edi]
jne 0x52dfb5
test cl, cl
je 0x52dfc3
add eax, 1
add edi, 1
sub edx, 1
jne 0x52df90
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x150]
add esi, 3
jmp 0x52df66
movzx eax, byte [eax]
movzx ecx, byte [edi]
sub eax, ecx
jne 0x52e02e
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x150]
add esi, 3
jmp 0x52df66
test ecx, ecx
jne 0x52dfe1
cmp ebx, 0x5e
jne 0x52dfe1
lea ecx, [ebx - 0x5d]
jmp 0x52df62
cmp ebx, 0x5d
jne 0x52e02e
test dword [edi + 0x60], 0x2000000
je 0x52e02e
mov eax, dword [esp + 0x34]
neg ecx
sbb cl, cl
and cl, 0x70
add cl, 0x9d
mov byte [ebp], cl
add ebp, 1
cmp eax, 0xfffffffe
mov dword [esp + 0x14], ebp
jne 0x52e013
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x98], edx
mov dword [esp + 0x7c], eax
add esi, 1
jmp 0x52d914
xor eax, eax
cmp ebx, eax
lea ecx, [ebp + 4]
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], eax
je 0x531b57
nop
cmp dword [esp + 0x38], 0
je 0x52e1c1
cmp ebx, 0xc0
jb 0x52e1c1
movzx ebx, byte [esi]
cmp ebx, 0xc0
mov dword [esp + 0x20], ebx
jb 0x52e1c1
test bl, 0x20
jne 0x52e0d6
movzx eax, byte [esi + 1]
and ebx, 0x1f
and eax, 0x3f
shl ebx, 6
or ebx, eax
add esi, 1
jmp 0x52e1b9
test bl, 0x10
jne 0x52e100
movzx ecx, byte [esi + 1]
movzx edx, byte [esi + 2]
and ebx, 0xf
and ecx, 0x3f
shl ebx, 6
or ecx, ebx
shl ecx, 6
and edx, 0x3f
or ecx, edx
mov ebx, ecx
add esi, 2
jmp 0x52e1b9
test bl, 8
jne 0x52e136
movzx eax, byte [esi + 1]
movzx ecx, byte [esi + 2]
movzx edx, byte [esi + 3]
and eax, 0x3f
and ebx, 7
shl ebx, 6
or eax, ebx
shl eax, 6
and ecx, 0x3f
or eax, ecx
shl eax, 6
and edx, 0x3f
or eax, edx
mov ebx, eax
add esi, 3
jmp 0x52e1b9
test bl, 4
jne 0x52e175
movzx eax, byte [esi + 1]
movzx ecx, byte [esi + 2]
movzx edx, byte [esi + 3]
and eax, 0x3f
and ebx, 3
shl ebx, 6
or eax, ebx
shl eax, 6
and ecx, 0x3f
or eax, ecx
movzx ecx, byte [esi + 4]
shl eax, 6
and edx, 0x3f
or eax, edx
shl eax, 6
and ecx, 0x3f
or eax, ecx
mov ebx, eax
add esi, 4
jmp 0x52e1b9
movzx edx, byte [esi + 1]
movzx eax, byte [esi + 2]
movzx ecx, byte [esi + 3]
and edx, 0x3f
and ebx, 1
shl ebx, 6
or edx, ebx
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [esi + 4]
shl edx, 6
and ecx, 0x3f
or edx, ecx
movzx ecx, byte [esi + 5]
shl edx, 6
and eax, 0x3f
or edx, eax
shl edx, 6
and ecx, 0x3f
or edx, ecx
mov ebx, edx
add esi, 5
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], esi
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x48]
cmp edx, eax
jbe 0x52e1d5
mov dword [esp + 0x24], 1
mov ecx, dword [esp + 0x154]
test ecx, ecx
je 0x52e1ec
cmp edx, eax
jbe 0x52e1ec
sub edx, eax
add dword [ecx], edx
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x52e217
cmp ebx, 0x5c
jne 0x52e79b
cmp byte [esi + 1], 0x45
jne 0x52e79b
mov dword [esp + 0x6c], 0
add esi, 1
jmp 0x52eaae
cmp ebx, 0x5b
jne 0x52e4a5
mov al, byte [esi + 1]
cmp al, 0x3a
je 0x52e233
cmp al, 0x2e
je 0x52e233
cmp al, 0x3d
jne 0x52e79b
lea edx, [esp + 0x8c]
push edx
mov eax, esi
call fcn.0052d260
test eax, eax
mov esi, dword [esp + 0x10]
je 0x52e797
cmp byte [esi + 1], 0x3a
mov eax, dword [esp + 0x150]
mov ebx, dword [eax + 8]
mov dword [esp + 0x60], 0
jne 0x531aa9
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5e
jne 0x52e289
mov eax, 1
add esi, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x8c]
sub ecx, esi
push ecx
push esi
call fcn.0052d2c0
mov edi, eax
test edi, edi
jl 0x531ace
mov eax, dword [esp + 0x44]
test al, 1
je 0x52e2b2
cmp edi, 2
jg 0x52e2b2
xor edi, edi
test eax, 0x20000000
mov edx, dword [esp + 0x60]
je 0x52e366
mov eax, edx
neg eax
sbb eax, eax
and eax, 0xe
add eax, edi
mov eax, dword [eax*4 + 0x58ad90]
test eax, eax
je 0x52e2f0
mov edx, dword [esp + 0x8c]
add edx, 1
mov dword [esp + 0x88], edx
lea esi, [eax - 1]
jmp 0x52eaae
mov eax, edi
sub eax, 8
je 0x52e3b9
sub eax, 1
je 0x52e3c0
sub eax, 1
je 0x52e3c7
cmp dword [esp + 0x50], 0
jne 0x52e366
test edx, edx
je 0x52e366
cmp dword [esp + 0x24], 0
jne 0x52e32c
mov eax, dword [esp + 0x8c]
cmp byte [eax + 2], 0x5d
je 0x52e366
mov ecx, dword [esp + 0x28]
mov byte [ecx], 2
mov eax, dword [esp + 0x28]
add eax, 1
push eax
push pe_nt_image_headers32
mov dword [esp + 0x30], eax
call fcn.00543110
mov ecx, dword [esp + 0x28]
add ecx, eax
push ecx
push 0x10ffff
mov dword [esp + 0x30], ecx
call fcn.00543110
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x60]
lea eax, [edi + edi*2]
mov esi, dword [eax*4 + 0x567018]
add esi, ebx
mov ecx, 8
lea edi, [esp + 0x104]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax*4 + 0x56701c]
test ecx, ecx
mov esi, dword [eax*4 + 0x567020]
jl 0x52e424
xor eax, eax
add ecx, ebx
test esi, esi
jl 0x52e410
mov bl, byte [ecx + eax]
or byte [esp + eax + 0x104], bl
add eax, 1
cmp eax, 0x20
jb 0x52e3a2
jmp 0x52e424
mov ecx, 0xb
jmp 0x52e3cc
mov ecx, 0xc
jmp 0x52e3cc
mov ecx, 0xd
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x8c]
test edx, edx
setne dl
add dl, 3
mov byte [eax], dl
mov eax, dword [esp + 0x28]
mov edx, 1
add eax, edx
mov dword [esp + 0x28], eax
mov byte [eax], cl
mov eax, dword [esp + 0x28]
add eax, edx
mov dword [esp + 0x28], eax
mov byte [eax], 0
add dword [esp + 0x28], edx
mov dword [esp + 0x1c], edx
add esi, edx
jmp 0x52eaae
mov bl, byte [ecx + eax]
not bl
and byte [esp + eax + 0x104], bl
add eax, 1
cmp eax, 0x20
jb 0x52e410
test esi, esi
jge 0x52e42a
neg esi
cmp esi, 1
jne 0x52e439
and byte [esp + 0x105], 0xc3
jmp 0x52e446
cmp esi, 2
jne 0x52e446
and byte [esp + 0x10f], 0x7f
xor eax, eax
test edx, edx
je 0x52e470
lea esp, [esp]
mov cl, byte [esp + eax + 0x104]
not cl
or byte [esp + eax + 0xb8], cl
add eax, 1
cmp eax, 0x20
jb 0x52e450
jmp 0x52e486
mov dl, byte [esp + eax + 0x104]
or byte [esp + eax + 0xb8], dl
add eax, 1
cmp eax, 0x20
jb 0x52e470
mov esi, dword [esp + 0x8c]
add esi, 1
mov dword [esp + 0x2c], 1
mov dword [esp + 0x40], 2
jmp 0x52eaae
cmp ebx, 0x5c
jne 0x52e79b
mov eax, dword [esp + 0x150]
mov ecx, dword [eax + 0x40]
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x134]
push ebx
push ecx
push edi
lea edx, [esp + 0xec]
push edx
lea eax, [esp + 0x20]
push eax
mov ecx, 1
call fcn.0052a860
cmp dword [edi], 0
mov esi, eax
jne 0x5321a9
test esi, esi
jne 0x52e4fc
mov ebx, dword [esp + 0xe0]
mov esi, dword [esp + 0x10]
jmp 0x52e793
cmp esi, 5
jne 0x52e50d
lea ebx, [esi + 3]
mov esi, dword [esp + 0x10]
jmp 0x52e793
cmp esi, 0xc
je 0x531af3
cmp esi, 0x1a
jne 0x52e540
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x52e533
cmp byte [esi + 2], 0x45
jne 0x52e533
add esi, 2
jmp 0x52eaaa
mov dword [esp + 0x6c], 1
jmp 0x52eaaa
cmp esi, 0x19
je 0x52eaa6
mov edx, dword [esp + 0x150]
mov eax, dword [edx + 8]
mov edi, 1
add dword [esp + 0x2c], edi
mov ebp, 2
add dword [esp + 0x40], ebp
lea ecx, [esi - 6]
cmp ecx, 0x1c
ja case.0x52e578.12
movzx ecx, byte [ecx + 0x5322b0]
jmp dword [ecx*4 + 0x53227c]
mov esi, dword [esi*4 + 0x58ad04]
mov edx, dword [esp + 0x10]
sub esi, edi
sub dword [esp + 0x2c], edi
mov dword [esp + 0x88], edx
jmp 0x52eaaa
xor ecx, ecx
mov edi, edi
mov dl, byte [eax + ecx + 0x40]
or byte [esp + ecx + 0xb8], dl
add ecx, edi
cmp ecx, 0x20
jb 0x52e5a0
jmp 0x52eaa6
mov dword [esp + 0x30], edi
xor ecx, ecx
lea ecx, [ecx]
mov dl, byte [eax + ecx + 0x40]
not dl
or byte [esp + ecx + 0xb8], dl
add ecx, edi
cmp ecx, 0x20
jb 0x52e5c0
jmp 0x52eaa6
xor ecx, ecx
jmp 0x52e5e0
mov dl, byte [eax + ecx + 0xa0]
or byte [esp + ecx + 0xb8], dl
add ecx, edi
cmp ecx, 0x20
jb 0x52e5e0
jmp 0x52eaa6
mov dword [esp + 0x30], edi
xor ecx, ecx
mov dl, byte [eax + ecx + 0xa0]
not dl
or byte [esp + ecx + 0xb8], dl
add ecx, edi
cmp ecx, 0x20
jb 0x52e600
jmp 0x52eaa6
mov esi, eax
lea eax, [esp + 0xb8]
xor edx, edx
sub esi, eax
lea esp, [esp]
lea ecx, [esp + edx + 0xb8]
mov al, byte [esi + ecx]
or byte [ecx], al
add edx, edi
cmp edx, 0x20
jb 0x52e630
jmp 0x52eaa6
mov esi, eax
lea ecx, [esp + 0xb8]
xor edx, edx
mov dword [esp + 0x30], edi
sub esi, ecx
lea esp, [esp]
lea ecx, [esp + edx + 0xb8]
mov al, byte [esi + ecx]
not al
or byte [ecx], al
add edx, edi
cmp edx, 0x20
jb 0x52e660
jmp 0x52eaa6
push 0xffffffffffffffff
push 0x568430
push edx
push ebx
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0xcc]
push edx
call fcn.0052d720
jmp 0x52eaa6
push edx
push ebx
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0xc4]
push ecx
mov eax, 0x568430
call fcn.0052d790
jmp 0x52eaa6
push 0xffffffffffffffff
push 0x568480
push edx
push ebx
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0xcc]
push eax
call fcn.0052d720
jmp 0x52eaa6
push edx
push ebx
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0xc4]
push edx
mov eax, 0x568480
call fcn.0052d790
jmp 0x52eaa6
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x134]
push eax
lea ecx, [esp + 0x64]
push ecx
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x10c]
call fcn.0052afe0
test eax, eax
je 0x5321a9
mov eax, dword [esp + 0x28]
xor ecx, ecx
cmp esi, 0x10
sete cl
cmp ecx, dword [esp + 0xfc]
mov ecx, edi
sete dl
add dl, 3
mov byte [eax], dl
mov eax, dword [esp + 0x28]
movzx edx, byte [esp + 0x1c]
add eax, ecx
mov dword [esp + 0x28], eax
mov byte [eax], dl
mov eax, dword [esp + 0x28]
movzx edx, byte [esp + 0x60]
add eax, ecx
mov dword [esp + 0x28], eax
mov byte [eax], dl
add dword [esp + 0x28], ecx
sub dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], ecx
jmp 0x52eaa6
test bl, 0x40
mov esi, dword [esp + 0x10]
jne 0x531b00
sub dword [esp + 0x2c], edi
sub dword [esp + 0x40], ebp
movzx ebx, byte [esi]
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x6c]
cmp byte [esi + 1], 0x5c
jne 0x52e7ba
cmp byte [esi + 2], 0x45
jne 0x52e7b6
add esi, 2
xor edx, edx
mov dword [esp + 0x10], esi
cmp byte [esi + 1], 0x5c
je 0x52e7a1
mov dword [esp + 0x6c], edx
cmp ebx, 0xd
mov ecx, esi
je 0x52e7c6
cmp ebx, 0xa
jne 0x52e7d4
mov eax, dword [esp + 0x150]
or dword [eax + 0x64], 0x800
test edx, edx
jne 0x52ea50
cmp byte [esi + 1], 0x2d
jne 0x52ea50
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
jne 0x52e841
cmp byte [esi + 1], 0x45
jne 0x52e80d
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
je 0x52e7f6
jmp 0x52e841
cmp byte [esi], 0x5c
jne 0x52e841
cmp byte [esi + 1], 0x51
jne 0x52e841
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
jne 0x52e838
cmp byte [esi + 1], 0x45
jne 0x52e838
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
je 0x52e812
jmp 0x52e841
mov edx, 1
mov dword [esp + 0x6c], edx
mov al, byte [esi]
test al, al
je 0x52ea4a
test edx, edx
jne 0x52e857
cmp al, 0x5d
je 0x52ea4a
cmp dword [esp + 0x38], 0
movzx ebx, al
mov dword [esp + 0x58], ebx
je 0x52e94f
cmp ebx, 0xc0
jb 0x52e94f
test bl, 0x20
jne 0x52e891
movzx eax, byte [esi + 1]
and ebx, 0x1f
and eax, 0x3f
shl ebx, 6
or ebx, eax
add esi, 1
jmp 0x52e947
movzx ecx, byte [esi + 1]
movzx eax, byte [esi + 2]
and ecx, 0x3f
and eax, 0x3f
test bl, 0x10
jne 0x52e8b9
and ebx, 0xf
shl ebx, 6
or ecx, ebx
shl ecx, 6
or ecx, eax
add esi, 2
jmp 0x52e945
test bl, 8
jne 0x52e8df
and ebx, 7
shl ebx, 6
or ecx, ebx
shl ecx, 6
or ecx, eax
movzx eax, byte [esi + 3]
shl ecx, 6
and eax, 0x3f
or ecx, eax
add esi, 3
jmp 0x52e945
test bl, 4
jne 0x52e911
and ebx, 3
shl ebx, 6
or ecx, ebx
shl ecx, 6
or ecx, eax
movzx eax, byte [esi + 3]
shl ecx, 6
and eax, 0x3f
or ecx, eax
movzx eax, byte [esi + 4]
shl ecx, 6
and eax, 0x3f
or ecx, eax
add esi, 4
jmp 0x52e945
and ebx, 1
shl ebx, 6
or ecx, ebx
shl ecx, 6
or ecx, eax
movzx eax, byte [esi + 3]
shl ecx, 6
and eax, 0x3f
or ecx, eax
movzx eax, byte [esi + 4]
shl ecx, 6
and eax, 0x3f
or ecx, eax
movzx eax, byte [esi + 5]
shl ecx, 6
and eax, 0x3f
or ecx, eax
add esi, 5
mov ebx, ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x10], esi
test edx, edx
jne 0x52e9f1
cmp ebx, 0x5c
jne 0x52e9ac
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x150]
mov eax, dword [edx + 0x40]
mov esi, dword [esp + 0x134]
push ecx
push eax
push esi
lea ecx, [esp + 0x64]
push ecx
lea edx, [esp + 0x20]
push edx
lea ecx, [ebx - 0x5b]
call fcn.0052a860
cmp dword [esi], 0
jne 0x5321a9
test eax, eax
je 0x52e9e9
cmp eax, 5
jne 0x531b25
lea ebx, [eax + 3]
jmp 0x52e9ed
cmp ebx, 0x5b
jne 0x52e9f1
mov al, byte [esi + 1]
cmp al, 0x3a
je 0x52e9c4
cmp al, 0x2e
je 0x52e9c4
cmp al, 0x3d
jne 0x52e9f1
lea eax, [esp + 0x8c]
push eax
mov eax, esi
call fcn.0052d260
test eax, eax
je 0x52e9ed
mov edx, dword [esp + 0x134]
mov dword [edx], 0x53
jmp 0x5321a9
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
cmp ebx, eax
jb 0x531b32
je 0x52ea50
cmp ebx, 0xd
mov dword [esp + 0x40], 2
je 0x52ea15
cmp ebx, 0xa
jne 0x52ea25
mov eax, dword [esp + 0x150]
or dword [eax + 0x64], 0x800
jmp 0x52ea2c
mov eax, dword [esp + 0x150]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x44]
push ebx
push ecx
push eax
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0xcc]
push ecx
jmp 0x52ea9d
mov esi, ecx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x40]
cmp eax, 2
jge 0x52ea60
add eax, 1
mov dword [esp + 0x40], eax
cmp dword [esp + 0x6c], 0
jne 0x52ea7d
cmp dword [esp + 0x1c], 0
jne 0x52ea7d
cmp eax, 1
jne 0x52ea7d
cmp byte [esi + 1], 0x5d
je 0x52ebf8
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x150]
push eax
push eax
mov eax, dword [esp + 0x4c]
push edx
push eax
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0xcc]
push edx
call fcn.0052d500
add dword [esp + 0x2c], eax
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
add esi, 1
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
test ebx, ebx
mov dword [esp + 0x20], ebx
jne 0x52eaee
mov eax, dword [esp + 0x88]
test eax, eax
je 0x531b57
mov esi, eax
add esi, 1
mov dword [esp + 0x88], ebx
mov dword [esp + 0x10], esi
movzx ebx, byte [esi]
test ebx, ebx
mov dword [esp + 0x20], ebx
je 0x531b57
cmp ebx, 0x5d
jne 0x52e090
cmp dword [esp + 0x6c], 0
jne 0x52e090
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x48]
cmp edx, esi
lea ecx, [ebx - 0x5c]
ja 0x52eb15
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x52eb25
or eax, 0xffffffff
mov dword [esp + 0x34], eax
test ecx, ecx
mov edi, dword [esp + 0x78]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x98], edi
mov dword [esp + 0x60], eax
je 0x52eda2
mov ecx, dword [esp + 0x1c]
test ecx, ecx
jne 0x52eb68
cmp dword [esp + 0x30], ecx
je 0x52eb68
test dword [esp + 0x44], 0x20000000
je 0x52eda2
mov byte [edx], 0
add dword [esp + 0x28], 1
mov byte [ebp], 0x70
add ebp, 3
cmp dword [esp + 0x50], 0
setne al
test ecx, ecx
mov byte [ebp], al
je 0x52eb8b
or al, 4
mov byte [ebp], al
cmp dword [esp + 0x2c], 0
jle 0x52ed6e
or byte [ebp], 2
mov ecx, dword [esp + 0x28]
add ebp, 1
sub ecx, ebp
lea eax, [ebp + 0x20]
mov edi, ebp
call fcn.0052a710
cmp dword [esp + 0x50], 0
je 0x52ebd8
cmp dword [esp + 0x1c], 0
jne 0x52ebd8
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esp + eax + 0xb8]
not cl
mov byte [esp + eax + 0xb8], cl
add eax, 1
cmp eax, 0x20
jb 0x52ebc0
mov ecx, 8
lea esi, [esp + 0xb8]
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov edx, dword [esp + 0x28]
lea ecx, [edx + 0x20]
mov dword [esp + 0x14], ecx
jmp 0x52ed78
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
add esi, 1
cmp dword [esp + 0x50], 0
mov dword [esp + 0x10], esi
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], ecx
je 0x52ed22
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x52ec2a
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x78]
mov dword [esp + 0x98], edx
mov dword [esp + 0x7c], eax
je 0x52ecc0
test byte [esp + 0x44], 1
je 0x52ecc0
mov ecx, dword [esp + 0x20]
mov eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx eax, byte [eax + 0x56a6a0]
mov edx, ecx
shl eax, 7
and edx, 0x8000007f
jns 0x52ec77
dec edx
or edx, 0xffffff80
inc edx
add eax, edx
movzx eax, word [eax*2 + 0x56c8a0]
movzx eax, byte [eax*8 + 0x569023]
test eax, eax
je 0x52ecc4
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov byte [ebp], 0xf
add ebp, 1
mov byte [ebp], 9
add ebp, 1
mov byte [ebp], al
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
mov ecx, dword [esp + 0x20]
test byte [esp + 0x44], 1
mov ebp, dword [esp + 0x14]
setne dl
add dl, 0x1f
mov byte [ebp], dl
add ebp, 1
cmp dword [esp + 0x38], 0
je 0x52ed05
cmp ecx, 0x7f
jbe 0x52ed05
push ebp
push ecx
call fcn.00543110
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x150]
add ebp, eax
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
mov edi, dword [esp + 0x150]
mov byte [ebp], cl
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
cmp dword [esp + 0x38], 0
mov eax, dword [esp + 0x20]
je 0x52ed52
cmp eax, 0x7f
jbe 0x52ed52
lea ecx, [esp + 0x80]
push ecx
push eax
call fcn.00543110
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov ecx, eax
jmp 0x52db01
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov byte [esp + 0x80], al
mov ecx, 1
jmp 0x52db01
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov ecx, eax
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, eax
sar edx, 8
sub cl, al
mov byte [eax + 1], dl
mov byte [eax + 2], cl
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x150]
mov ebp, dword [esp + 0x14]
add esi, 1
jmp 0x52d914
mov eax, dword [esp + 0x154]
test eax, eax
je 0x52edb1
sub edx, esi
add dword [eax], edx
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0x30]
setne dl
add dl, 0x6e
mov byte [ebp], dl
add ebp, 1
test eax, eax
jne 0x52ee08
test ecx, ecx
je 0x52edf8
jmp 0x52ede0
mov cl, byte [esp + eax + 0xb8]
not cl
mov byte [esp + eax + 0xb8], cl
add eax, 1
cmp eax, 0x20
jb 0x52ede0
mov ecx, 8
lea esi, [esp + 0xb8]
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x150]
add ebp, 0x20
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
test ecx, ecx
je case.0x52dd4c.1
mov edi, dword [esp + 0x134]
lea edx, [esp + 0x4c]
push edx
lea eax, [esp + 0x58]
push eax
lea eax, [esi + 1]
call fcn.0052b110
cmp dword [edi], 0
mov esi, eax
mov dword [esp + 0x10], esi
jne 0x5321ad
mov ebp, dword [esp + 0x14]
jmp 0x52ee84
mov dword [esp + 0x4c], 0xffffffff
jmp 0x52ee7c
mov dword [esp + 0x54], 1
mov dword [esp + 0x4c], 0xffffffff
jmp 0x52ee84
mov dword [esp + 0x4c], 1
mov dword [esp + 0x54], 0
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov edi, dword [esp + 0x150]
mov ebx, dword [esp + 0x38]
je 0x531b7c
mov eax, dword [esp + 0x54]
test eax, eax
jne 0x52eec6
mov edx, dword [esp + 0x98]
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x5c], edx
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x2c], 0
neg eax
sbb eax, eax
and eax, 2
cmp dword [esp + 0x48], 0
mov dword [esp + 0x94], eax
mov dword [esp + 0x70], ecx
je 0x52efb4
add esi, 1
movzx eax, byte [esi]
mov ecx, dword [edi + 0xc]
test byte [eax + ecx], 1
je 0x52ef0d
mov eax, ecx
movzx edx, byte [esi + 1]
add esi, 1
test byte [edx + eax], 1
jne 0x52ef00
cmp byte [esi], 0x23
jne 0x52efad
mov al, byte [esi + 1]
add esi, 1
test al, al
je 0x52eef2
mov ecx, dword [edi + 0x84]
test ecx, ecx
je 0x52ef55
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x52ef7c
push ebx
lea edx, [edi + 0x88]
push edx
push eax
push ecx
push esi
call fcn.00542d60
test eax, eax
je 0x52ef7c
add esi, dword [edi + 0x88]
jmp 0x52eef2
mov ecx, dword [edi + 0x88]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x52ef7c
cmp al, byte [edi + 0x8c]
jne 0x52ef7c
cmp ecx, 1
je 0x52ef4d
mov al, byte [esi + 1]
cmp al, byte [edi + 0x8d]
je 0x52ef4d
add esi, 1
test ebx, ebx
je 0x52ef9e
mov cl, byte [esi]
and cl, 0xc0
cmp cl, 0x80
jne 0x52ef9e
lea ecx, [ecx]
mov dl, byte [esi + 1]
add esi, 1
and dl, 0xc0
cmp dl, 0x80
je 0x52ef90
mov al, byte [esi]
test al, al
jne 0x52ef20
jmp 0x52eef2
add esi, 0xffffffff
mov dword [esp + 0x10], esi
mov al, byte [esi + 1]
cmp al, 0x2b
jne 0x52efce
xor ebx, ebx
add esi, 1
mov dword [esp + 0x2c], 1
mov dword [esp + 0x10], esi
jmp 0x52efe9
cmp al, 0x3f
jne 0x52efe2
mov ebx, dword [esp + 0xf0]
add esi, 1
mov dword [esp + 0x10], esi
jmp 0x52efe9
mov ebx, dword [esp + 0xe8]
mov edi, dword [esp + 0x18]
cmp byte [edi], 0x75
mov dword [esp + 0x40], ebx
jne 0x52f0a1
lea esi, [edi + 3]
mov eax, esi
cmp eax, edi
jbe 0x52f01c
movzx ecx, byte [esi - 1]
add eax, 3
mov byte [eax - 1], cl
mov dl, byte [esi - 2]
mov byte [eax - 2], dl
movzx ecx, byte [esi - 3]
mov byte [eax - 3], cl
jmp 0x52f02e
movzx edx, byte [edi]
mov byte [eax], dl
mov cl, byte [edi + 1]
mov byte [eax + 1], cl
movzx edx, byte [edi + 2]
mov byte [eax + 2], dl
add ebp, 6
cmp dword [esp + 0x154], 0
mov byte [edi], 0x81
mov byte [edi + 1], 0
mov byte [edi + 2], 6
mov byte [edi + 6], 0x78
mov byte [edi + 7], 0
mov byte [edi + 8], 6
mov dword [esp + 0x14], ebp
mov dword [esp + 0xa0], 9
jne 0x52f09d
mov ecx, dword [esp + 0x150]
mov eax, dword [ecx + 0x10]
mov esi, dword [ecx + 0x20]
add eax, 2
cmp esi, eax
jb 0x52f09d
movzx eax, byte [esi - 1]
mov ah, byte [esi - 2]
mov edx, edi
sub edx, dword [ecx + 0x14]
add edx, 1
cmp eax, edx
jne 0x52f09d
lea edx, [eax + 3]
sar edx, 8
mov byte [esi - 2], dl
mov ecx, dword [ecx + 0x20]
add al, 3
mov byte [ecx - 1], al
mov esi, dword [esp + 0x10]
mov al, byte [edi]
cmp al, 0x1d
je 0x52f7f3
cmp al, 0x1e
je 0x52f7f3
cmp al, 0x1f
je 0x52f7f3
cmp al, 0x20
je 0x52f7f3
cmp al, 0x17
jae 0x52f0d8
movzx edx, al
mov ecx, 0x34
mov dword [esp + 0x20], edx
jmp 0x52f8c5
cmp al, 0x6e
je 0x52f74b
cmp al, 0x6f
je 0x52f74b
cmp al, 0x70
je 0x52f74b
cmp al, 0x71
je 0x52f74b
cmp al, 0x72
je 0x52f74b
cmp al, 0x73
je 0x52f74b
cmp al, 0x74
je 0x52f74b
cmp al, 0x7d
jb 0x52f71e
cmp al, 0x87
ja 0x52f71e
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x64]
xor ecx, ecx
sub ebx, eax
cmp byte [eax], 0x87
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x48], ecx
jne 0x52f14b
cmp byte [eax + 3], 0x91
je 0x52fc93
cmp byte [eax], 0x81
jae 0x52f173
cmp dword [esp + 0x54], 0
jg 0x52fc93
mov eax, dword [esp + 0x4c]
test eax, eax
jl 0x52f168
cmp eax, 1
jle 0x52f177
mov eax, 1
mov dword [esp + 0x4c], eax
jmp 0x52f177
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
test ecx, ecx
jne 0x52f256
cmp eax, 1
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x150]
jg 0x52f1f4
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
mov byte [eax], cl
mov ecx, dword [esp + 0x64]
push ecx
push edx
push 1
push edi
call fcn.0052d340
lea esi, [edi + 1]
mov ecx, ebx
mov eax, esi
call fcn.0052a710
add dword [esp + 0x14], 1
cmp dword [esp + 0x4c], 0
mov eax, edi
jne 0x52f1d1
mov byte [eax], 0xa1
jmp 0x52fc8f
mov cl, byte [esp + 0x40]
sub cl, 0x6e
sub dword [esp + 0x4c], 1
mov edx, dword [esp + 0x4c]
mov byte [eax], cl
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x48], eax
jmp 0x52f3c1
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
push eax
push ecx
push 4
push edi
mov byte [edx], 0
call fcn.0052d340
lea eax, [edi + 4]
mov ecx, ebx
call fcn.0052a710
mov dl, byte [esp + 0x40]
mov eax, dword [esp + 0x18]
add dword [esp + 0x14], 4
sub dl, 0x6e
mov byte [eax], dl
add eax, 1
mov byte [eax], 0x83
add eax, 1
mov byte [eax], 0
mov byte [eax + 1], 0
mov esi, dword [esp + 0x10]
mov dword [esp + 0x30], eax
add eax, 2
sub dword [esp + 0x4c], 1
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
jmp 0x52f3c1
cmp ecx, 1
jle 0x52f3b1
mov edi, dword [esp + 0x154]
test edi, edi
je 0x52f2b2
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xa0]
add eax, 0xffffffff
mov ecx, eax
imul ecx, edx
imul edx
test edx, edx
jg 0x531ba1
jl 0x52f298
cmp eax, 0x7fffffff
ja 0x531ba1
mov eax, dword [edi]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x531ba1
add eax, ecx
mov dword [edi], eax
jmp 0x52f3b1
cmp dword [esp + 0xb0], 0
je 0x52f2d3
cmp dword [esp + 0x5c], 0
jge 0x52f2d3
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x68], eax
mov dword [esp + 0x5c], ecx
mov eax, 1
cmp dword [esp + 0x54], eax
mov dword [esp + 0x50], eax
jle 0x52f3b1
mov esi, dword [esp + 0x150]
lea ecx, [ecx]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov edi, dword [esi + 0x20]
sub edi, dword [esi + 0x10]
push ebx
push edx
push eax
call fcn.00545633
mov edx, dword [esi + 0x10]
mov ecx, ebp
sub ecx, edi
add ecx, dword [esi + 0x3c]
add esp, 0xc
lea eax, [ecx + edx - 0x64]
cmp dword [esi + 0x20], eax
jbe 0x52f352
mov esi, dword [esp + 0x150]
call fcn.0052a760
test eax, eax
mov ecx, dword [esp + 0x134]
mov dword [ecx], eax
jne 0x5321a9
mov edx, ebp
sub edx, edi
mov eax, esi
add edx, dword [eax + 0x3c]
mov ecx, dword [eax + 0x10]
lea edx, [edx + ecx - 0x64]
cmp dword [eax + 0x20], edx
ja 0x52f320
mov ecx, dword [esi + 0x10]
lea eax, [ecx + ebp]
add ecx, edi
cmp eax, ecx
jae 0x52f392
mov ebp, 2
mov edx, dword [esi + 0x20]
xor ecx, ecx
mov ch, byte [eax]
mov cl, byte [eax + 1]
add ecx, ebx
sar ecx, 8
mov byte [edx], cl
movzx ecx, byte [eax + 1]
mov edx, dword [esi + 0x20]
add cl, bl
mov byte [edx + 1], cl
add dword [esi + 0x20], ebp
mov ecx, dword [esi + 0x10]
add eax, ebp
add ecx, edi
cmp eax, ecx
jb 0x52f367
mov eax, dword [esp + 0x50]
add dword [esp + 0x14], ebx
add eax, 1
cmp eax, dword [esp + 0x54]
mov ebp, edi
mov dword [esp + 0x50], eax
jl 0x52f2f0
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
test edx, edx
jle 0x52f3c3
sub edx, dword [esp + 0x54]
mov dword [esp + 0x4c], edx
test edx, edx
jl 0x52f5da
mov edi, dword [esp + 0x154]
test edi, edi
je 0x52f423
test edx, edx
jle 0x52f423
mov eax, dword [esp + 0xa0]
add eax, 7
mov ecx, eax
imul ecx, edx
imul edx
sub ecx, 6
test edx, edx
jg 0x531bc6
jl 0x52f409
cmp eax, 0x7fffffff
ja 0x531bc6
mov eax, dword [edi]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x531bc6
add eax, ecx
mov dword [edi], eax
jmp 0x52f587
add edx, 0xffffffff
mov dword [esp + 0x50], edx
js 0x52f587
mov al, byte [esp + 0x40]
mov esi, dword [esp + 0x14]
sub al, 0x6e
mov byte [esp + 0x9f], al
mov eax, dword [esp + 0x150]
mov edi, dword [eax + 0x20]
sub edi, dword [eax + 0x10]
mov al, byte [esp + 0x9f]
mov ecx, dword [esp + 0x30]
mov byte [esi], al
add esi, 1
cmp dword [esp + 0x50], 0
mov dword [esp + 0x14], esi
je 0x52f494
mov byte [esi], 0x83
add esi, 1
test ecx, ecx
jne 0x52f47b
xor eax, eax
jmp 0x52f47f
mov eax, esi
sub eax, ecx
mov ecx, eax
sar ecx, 8
mov dword [esp + 0x30], esi
mov byte [esi], cl
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x18]
push ebx
push edx
push esi
call fcn.00545633
mov eax, dword [esp + 0x15c]
mov edx, dword [eax + 0x10]
mov ecx, ebp
sub ecx, edi
add ecx, dword [eax + 0x3c]
add esp, 0xc
lea ecx, [ecx + edx - 0x64]
cmp dword [eax + 0x20], ecx
jbe 0x52f4f7
mov esi, dword [esp + 0x150]
call fcn.0052a760
test eax, eax
mov edx, dword [esp + 0x134]
mov dword [edx], eax
jne 0x5321a9
mov ecx, ebp
sub ecx, edi
mov eax, esi
add ecx, dword [eax + 0x3c]
mov edx, dword [eax + 0x10]
lea ecx, [ecx + edx - 0x64]
cmp dword [eax + 0x20], ecx
ja 0x52f4c1
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x150]
mov ecx, dword [edx + 0x10]
lea eax, [ecx + ebp]
add ecx, edi
cmp eax, ecx
jae 0x52f570
mov ecx, dword [esp + 0x50]
mov esi, ecx
neg esi
sbb esi, esi
and esi, 3
add esi, 1
neg ecx
sbb cl, cl
and cl, 3
add cl, 1
mov ebp, edx
lea ebx, [ebx]
xor edx, edx
mov dh, byte [eax]
add eax, 2
mov dl, byte [eax - 1]
add edx, esi
add edx, ebx
mov ebx, dword [ebp + 0x20]
sar edx, 8
mov byte [ebx], dl
movzx edx, byte [eax - 1]
mov ebx, dword [esp + 0x24]
mov ebp, dword [ebp + 0x20]
add dl, bl
add dl, cl
mov byte [ebp + 1], dl
mov ebp, dword [esp + 0x150]
add dword [ebp + 0x20], 2
mov edx, dword [ebp + 0x10]
add edx, edi
cmp eax, edx
jb 0x52f530
mov esi, dword [esp + 0x14]
add esi, ebx
sub dword [esp + 0x50], 1
mov ebp, edi
mov dword [esp + 0x14], esi
jns 0x52f441
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
test edi, edi
je 0x52fb5b
mov esi, dword [esp + 0x14]
mov eax, esi
sub eax, edi
add eax, 1
mov ecx, esi
sub ecx, eax
xor edx, edx
mov dh, byte [ecx + 1]
mov dl, byte [ecx + 2]
test edx, edx
jne 0x52f5b2
xor edi, edi
jmp 0x52f5b4
sub edi, edx
mov byte [esi], 0x78
add esi, 1
mov edx, eax
sar edx, 8
mov byte [esi], dl
mov byte [esi + 1], al
add esi, 2
test edi, edi
mov byte [ecx + 1], dl
mov byte [ecx + 2], al
jne 0x52f597
mov dword [esp + 0x14], esi
jmp 0x52fb57
mov ebp, dword [esp + 0x14]
xor eax, eax
mov ah, byte [ebp - 2]
lea esi, [ebp - 3]
mov edi, esi
mov al, byte [esi + 2]
sub edi, eax
mov al, byte [edi]
cmp al, 0x81
je 0x52f5f7
cmp al, 0x82
jne 0x52f603
cmp dword [esp + 0x2c], 0
je 0x52f603
mov byte [edi], 0x83
jmp 0x52f613
cmp al, 0x81
je 0x52f711
cmp al, 0x82
je 0x52f711
cmp dword [esp + 0x154], 0
jne 0x52f651
mov ebx, edi
mov ecx, dword [esp + 0x150]
mov edx, dword [esp + 0x38]
push 0
push ecx
push edx
push esi
push ebx
call fcn.0052b880
test eax, eax
jne 0x52f64e
xor eax, eax
mov ah, byte [ebx + 1]
mov al, byte [ebx + 2]
add ebx, eax
cmp byte [ebx], 0x77
je 0x52f623
jmp 0x52f651
add byte [edi], 5
cmp byte [edi], 0x87
jne 0x52f667
xor ecx, ecx
mov ch, byte [edi + 1]
mov cl, byte [edi + 2]
cmp byte [ecx + edi], 0x77
je 0x52f667
mov byte [edi], 0x8c
cmp dword [esp + 0x2c], 0
je 0x52f704
mov al, byte [edi]
cmp al, 0x87
je 0x52f688
cmp al, 0x8c
je 0x52f688
add al, 1
mov byte [edi], al
mov byte [esi], 0x7b
jmp 0x52f6e9
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x150]
push edx
push eax
push 3
mov ebx, ebp
push edi
sub ebx, edi
mov byte [ebp], 0
call fcn.0052d340
lea eax, [edi + 3]
mov ecx, ebx
call fcn.0052a710
add ebx, 3
add ebp, 3
cmp byte [edi], 0x87
mov eax, ebx
setne cl
sub cl, 1
and cl, 0xfb
add cl, 0x89
mov byte [edi], cl
mov byte [ebp], 0x7b
add ebp, 1
sar eax, 8
mov byte [ebp], al
mov byte [ebp + 1], bl
add ebp, 2
mov dword [esp + 0x14], ebp
mov byte [edi + 1], al
mov byte [edi + 2], bl
mov eax, dword [esp + 0x48]
test eax, eax
je 0x52f6f4
mov byte [eax], 0x94
cmp dword [esp + 0x54], 2
jl 0x52fc8f
jmp 0x52fb57
mov al, byte [esp + 0x40]
add al, 0x79
mov byte [esi], al
jmp 0x52fc8f
mov al, byte [esp + 0x40]
add al, 0x79
mov byte [esi], al
jmp 0x52fb57
cmp al, 0x9d
je 0x52fc93
mov edx, dword [esp + 0x134]
mov dword [edx], 0xb
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x52f75c
mov dword [esp + 0x14], edi
jmp 0x52fc93
mov ecx, dword [esp + 0x54]
test ecx, ecx
jne 0x52f77f
cmp eax, 0xffffffff
jne 0x52f7a3
add bl, 0x62
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x52fb57
cmp ecx, 1
jne 0x52f7ba
cmp eax, 0xffffffff
jne 0x52f7ba
add bl, 0x64
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x52fb57
cmp eax, 1
jne 0x52f7ba
add bl, 0x66
mov byte [ebp], bl
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x52fb57
add bl, 0x68
mov byte [ebp], bl
add ebp, 1
mov edx, ecx
sar edx, 8
mov byte [ebp], dl
mov byte [ebp + 1], cl
add ebp, 2
cmp eax, 0xffffffff
jne 0x52f7dc
xor eax, eax
mov dword [esp + 0x4c], eax
mov ecx, eax
sar ecx, 8
mov byte [ebp], cl
mov byte [ebp + 1], al
add ebp, 2
mov dword [esp + 0x14], ebp
jmp 0x52fb57
movzx ecx, al
sub ecx, 0x1e
je 0x52f81b
sub ecx, 1
je 0x52f814
sub ecx, 1
je 0x52f80d
xor ecx, ecx
jmp 0x52f820
mov ecx, 0x27
jmp 0x52f820
mov ecx, 0x1a
jmp 0x52f820
mov ecx, 0xd
cmp dword [esp + 0x38], 0
mov dword [esp + 0x1c], ecx
je 0x52f891
mov dl, byte [ebp - 1]
lea edi, [ebp - 1]
and dl, 0xc0
cmp dl, 0x80
jne 0x52f88d
mov ecx, edi
mov al, byte [ecx]
and al, 0xc0
cmp al, dl
jne 0x52f85e
jmp 0x52f850
mov dl, byte [ecx - 1]
sub ecx, 1
and dl, 0xc0
cmp dl, 0x80
je 0x52f850
mov eax, ebp
sub eax, ecx
push eax
mov dword [esp + 0x24], eax
push ecx
lea eax, [esp + 0xfc]
push eax
call fcn.00545633
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
add esp, 0xc
or dword [esp + 0x20], 0x10000000
jmp 0x52f8c5
mov edi, dword [esp + 0x18]
cmp al, 0x1e
movzx edx, byte [ebp - 1]
mov dword [esp + 0x20], edx
ja 0x52f8c5
cmp dword [esp + 0x54], 1
jle 0x52f8c5
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x150]
mov eax, dword [edx + 0x68]
or eax, dword [esp + 0xa4]
mov dword [esp + 0x5c], eax
mov al, byte [edi]
cmp al, 0x10
je 0x52f8d8
cmp al, 0xf
je 0x52f8d8
or eax, 0xffffffff
mov dword [esp + 0x30], eax
jmp 0x52f8e4
movzx edx, byte [edi + 2]
movzx eax, byte [edi + 1]
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x4c]
test eax, eax
mov edi, ebp
je 0x52fc93
add ebx, ecx
cmp dword [esp + 0x54], 0
jne 0x52f961
cmp eax, 0xffffffff
jne 0x52f925
mov eax, dword [esp + 0x18]
add bl, 0x21
mov byte [eax], bl
add eax, 1
mov dword [esp + 0x14], eax
jmp 0x52faf2
cmp eax, 1
jne 0x52f93f
mov eax, dword [esp + 0x18]
add bl, 0x25
mov byte [eax], bl
add eax, 1
mov dword [esp + 0x14], eax
jmp 0x52faf2
mov ecx, dword [esp + 0x18]
add bl, 0x27
mov byte [ecx], bl
add ecx, 1
mov edx, eax
sar edx, 8
mov byte [ecx], dl
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x14], ecx
jmp 0x52faf2
cmp dword [esp + 0x54], 1
jne 0x52f9b4
cmp eax, 0xffffffff
jne 0x52f986
mov eax, dword [esp + 0x18]
add bl, 0x23
mov byte [eax], bl
add eax, 1
mov dword [esp + 0x14], eax
jmp 0x52faf2
cmp eax, 1
mov dword [esp + 0x14], edi
je 0x52fc93
lea edx, [eax - 1]
add bl, 0x27
lea ecx, [edi + 1]
sar edx, 8
sub al, 1
mov byte [edi], bl
mov byte [ecx], dl
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x14], ecx
jmp 0x52faf2
mov esi, dword [esp + 0x18]
add cl, 0x29
mov byte [esi], cl
mov ecx, dword [esp + 0x54]
add esi, 1
mov edx, ecx
sar edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
add esi, 2
test eax, eax
mov dword [esp + 0x14], esi
jge 0x52fa4a
cmp dword [esp + 0x38], 0
je 0x52fa1e
test dword [esp + 0x20], 0x10000000
je 0x52fa1e
mov edi, dword [esp + 0x20]
and edi, 7
push edi
lea eax, [esp + 0xf8]
push eax
push esi
call fcn.00545633
add esi, edi
add bl, 0x21
add esp, 0xc
mov byte [esi], bl
add esi, 1
jmp 0x52faee
mov cl, byte [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov byte [esi], cl
add esi, 1
test eax, eax
jl 0x52fa3d
mov dl, byte [esp + 0x30]
mov byte [esi], al
add esi, 1
mov byte [esi], dl
add esi, 1
add bl, 0x21
mov byte [esi], bl
add esi, 1
jmp 0x52faee
cmp eax, ecx
je 0x52faf2
cmp dword [esp + 0x38], 0
je 0x52fa90
test dword [esp + 0x20], 0x10000000
je 0x52fa90
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
and edi, 7
push edi
lea eax, [esp + 0xf8]
push eax
push esi
call fcn.00545633
mov ecx, dword [esp + 0x60]
add esp, 0xc
add esi, edi
jmp 0x52faa3
mov edx, dword [esp + 0x14]
mov al, byte [esp + 0x20]
add dword [esp + 0x14], 1
mov esi, dword [esp + 0x14]
mov byte [edx], al
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 0x4c]
jl 0x52fac2
movzx edx, byte [esp + 0x1c]
mov byte [esi], dl
movzx edx, byte [esp + 0x30]
add esi, 1
mov byte [esi], dl
add esi, 1
sub eax, ecx
cmp eax, 1
mov dword [esp + 0x4c], eax
jne 0x52fad9
add bl, 0x25
mov byte [esi], bl
add esi, eax
jmp 0x52faee
add bl, 0x27
mov byte [esi], bl
add esi, 1
mov ecx, eax
sar ecx, 8
mov byte [esi], cl
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x14], esi
cmp dword [esp + 0x38], 0
je 0x52fb2c
test dword [esp + 0x20], 0x10000000
je 0x52fb2c
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
and esi, 7
push esi
lea edx, [esp + 0xf8]
push edx
push edi
call fcn.00545633
add esp, 0xc
add edi, esi
jmp 0x52fb39
mov edi, dword [esp + 0x14]
mov al, byte [esp + 0x20]
mov byte [edi], al
add edi, 1
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x14], edi
jl 0x52fb57
mov cl, byte [esp + 0x30]
mov byte [edi], al
add edi, 1
mov byte [edi], cl
add edi, 1
mov dword [esp + 0x14], edi
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x2c], 0
je 0x52fc93
mov eax, dword [esp + 0x70]
movzx ecx, byte [eax]
lea edx, [ecx - 0x1d]
cmp edx, 0x53
ja case.0x52fb80.33
movzx edx, byte [edx + 0x5322e4]
jmp dword [edx*4 + 0x5322d0]
mov dl, byte [eax + 3]
cmp dl, 0x10
je 0x52fba6
cmp dl, 0xf
je 0x52fba6
movzx ecx, byte [ecx + 0x568388]
xor edx, edx
add ecx, edx
add eax, ecx
jmp 0x52fbfd
movzx ecx, byte [ecx + 0x568388]
mov edx, 2
add ecx, edx
add eax, ecx
jmp 0x52fbfd
movzx edx, byte [ecx + 0x568388]
add eax, edx
cmp dword [esp + 0x38], 0
mov dword [esp + 0x70], eax
je case.0x52fb80.33
movzx ecx, byte [eax - 1]
cmp cl, 0xc0
jb case.0x52fb80.33
and ecx, 0x3f
movzx ecx, byte [ecx + 0x568520]
add eax, ecx
jmp 0x52fbfd
add eax, 0x21
jmp 0x52fbfd
xor edx, edx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
add eax, edx
mov dword [esp + 0x70], eax
mov ebx, dword [esp + 0x14]
sub ebx, eax
test ebx, ebx
jle 0x52fc93
movzx ecx, byte [eax]
cmp ecx, 0x76
jae 0x52fc28
mov cl, byte [ecx + 0x568210]
test cl, cl
jbe 0x52fc28
mov byte [eax], cl
jmp 0x52fc8f
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x150]
push eax
push ecx
mov byte [ebp], 0
mov edx, dword [esp + 0x78]
push 3
push edx
call fcn.0052d340
mov edi, dword [esp + 0x70]
lea eax, [edi + 3]
mov ecx, ebx
call fcn.0052a710
mov eax, dword [esp + 0x70]
mov byte [eax], 0x81
mov byte [ebp + 3], 0x78
add ebx, 3
add ebp, 3
add ebp, 1
mov eax, ebx
sar eax, 8
mov byte [ebp], al
mov byte [ebp + 1], bl
mov ecx, dword [esp + 0x70]
mov byte [ecx + 1], al
mov edx, dword [esp + 0x70]
add ebp, 2
mov dword [esp + 0x14], ebp
mov byte [edx + 2], bl
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x150]
mov ecx, dword [esp + 0x94]
or dword [eax + 0x68], ecx
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x18], 0
mov edi, eax
add esi, 1
jmp 0x52d914
add esi, 1
mov dword [esp + 0x10], esi
mov cl, byte [esi]
cmp cl, 0x3f
jne 0x52fd2a
cmp byte [esi + 1], 0x23
jne 0x52fd2a
add esi, 2
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x52fcf8
cmp al, 0x29
je 0x52fd1d
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x52fce3
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x12
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
cmp byte [esi], 0
je 0x52fcf8
add esi, 1
jmp 0x52d914
cmp cl, 0x2a
jne 0x52ffa9
mov al, byte [esi + 1]
cmp al, 0x3a
lea edx, [esi + 1]
mov dword [esp + 0x50], edx
je 0x52fd51
mov ebx, dword [edi + 0xc]
movzx eax, al
test byte [eax + ebx], 2
je 0x52ffa9
mov ebx, dword [edi + 0xc]
xor eax, eax
mov esi, edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], eax
movzx eax, byte [esi]
test byte [eax + ebx], 2
mov ecx, 0x566ef8
mov dword [esp + 0x48], ecx
je 0x52fd90
mov edi, ebx
lea esp, [esp]
add esi, 1
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + edi], 2
jne 0x52fd80
mov edi, esi
sub edi, edx
cmp byte [esi], 0x3a
mov dword [esp + 0x94], edi
jne 0x52fddb
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
mov ebx, esi
mov dword [esp + 0x30], ebx
je 0x52fdc8
cmp al, 0x29
je 0x52fdc8
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x52fdb7
mov eax, esi
sub eax, ebx
cmp eax, 0xff
mov dword [esp + 0x24], eax
ja 0x531beb
cmp byte [esi], 0x29
jne 0x531c10
mov dword [esp + 0x1c], 0
mov ebx, 0x566f28
cmp edi, dword [ebx]
jne 0x52feba
test edi, edi
mov eax, edx
je 0x52fe19
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x52feac
test dl, dl
je 0x52fe19
add eax, 1
add ecx, 1
sub edi, 1
jne 0x52fe00
mov edi, dword [esp + 0x1c]
lea eax, [edi + edi*2]
add eax, eax
mov ecx, dword [eax + eax + 0x566f2c]
add eax, eax
cmp ecx, 0x9e
jne 0x52feec
cmp dword [esp + 0x24], 0
jne 0x531c35
mov ecx, dword [esp + 0x150]
mov eax, dword [ecx + 0x24]
test eax, eax
mov dword [ecx + 0x6c], 1
je 0x52fe7e
jmp 0x52fe60
mov byte [ebp], 0xa0
movzx edx, byte [eax + 5]
add ebp, 1
mov byte [ebp], dl
movzx edx, byte [eax + 4]
mov byte [ebp + 1], dl
mov eax, dword [eax]
add ebp, 2
test eax, eax
jne 0x52fe60
cmp dword [ecx + 0x5c], 0
setg al
add al, 0x9e
mov byte [ebp], al
add ebp, 1
cmp dword [esp + 0x34], 0xfffffffe
movzx esi, al
mov dword [esp + 0x14], ebp
jne 0x52ff6b
mov dword [esp + 0x34], 0xffffffff
jmp 0x52ff6b
movzx edx, byte [eax]
movzx eax, byte [ecx]
sub edx, eax
je 0x52fe19
mov eax, dword [ebx]
mov ecx, dword [esp + 0x48]
add dword [esp + 0x1c], 1
add ebx, 0xc
cmp ebx, 0x566f94
lea ecx, [ecx + eax + 1]
mov dword [esp + 0x48], ecx
jge 0x531ca4
mov edi, dword [esp + 0x94]
mov edx, dword [esp + 0x50]
jmp 0x52fdf1
mov ebx, dword [esp + 0x24]
test ebx, ebx
jne 0x52ff09
test ecx, ecx
jl 0x531c5a
mov al, cl
mov byte [ebp], al
movzx esi, cl
jmp 0x52ff5d
cmp dword [eax + 0x566f30], 0
jl 0x531c7f
mov al, byte [eax + 0x566f30]
mov byte [ebp], al
movzx esi, al
mov eax, dword [esp + 0x154]
add ebp, 1
test eax, eax
je 0x52ff3e
add dword [eax], ebx
mov byte [ebp], 0
add ebp, 1
jmp 0x52ff59
mov eax, dword [esp + 0x30]
push ebx
mov byte [ebp], bl
push eax
add ebp, 1
push ebp
call fcn.00545633
mov edi, dword [esp + 0x28]
add esp, 0xc
add ebp, ebx
mov byte [ebp], 0
mov ecx, dword [esp + 0x150]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 0xffffff6a
cmp esi, 5
ja case.default.0x52ff76
jmp dword [esi*4 + 0x532338]
or dword [ecx + 0x64], 0x1000
jmp case.default.0x52ff76
mov dword [ecx + 0x70], 1
cmp edi, 9
mov esi, dword [esp + 0x10]
jge 0x531ca4
mov edi, dword [esp + 0x150]
add esi, 1
jmp 0x52d914
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
mov edx, dword [esp + 0x44]
xor ebx, ebx
cmp cl, 0x3f
mov dword [esp + 0x48], edx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x2c], 0x85
mov dword [esp + 0x64], eax
mov dword [esp + 0x30], ebx
jne 0x530939
mov edx, 1
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
movzx ecx, al
add ecx, 0xffffffdf
cmp ecx, 0x5b
ja case.0x52fff9.34
movzx ecx, byte [ecx + 0x532388]
jmp dword [ecx*4 + 0x532350]
mov dword [esp + 0x30], edx
mov dword [edi + 0x7c], edx
add esi, edx
jmp 0x530ceb
cmp byte [esi + 1], 0x3f
mov ebx, esi
mov dword [esp + 0x2c], 0x87
mov dword [esp + 0x8c], ebx
jne 0x530065
cmp byte [esi + 2], 0x43
jne 0x530065
mov al, byte [esi + 3]
cmp al, 0x30
mov ecx, 3
mov dword [esp + 0x3c], ecx
jb 0x530054
cmp al, 0x39
ja 0x530050
add ecx, edx
mov al, byte [ecx + esi]
cmp al, 0x30
jae 0x530043
mov dword [esp + 0x3c], ecx
cmp byte [ecx + esi], 0x29
jne 0x530065
lea ebx, [ecx + esi + 1]
mov dword [esp + 0x8c], ebx
cmp byte [ebx + 1], 0x3f
jne 0x530094
mov al, byte [ebx + 2]
cmp al, 0x3d
je 0x530089
cmp al, 0x21
je 0x530089
cmp al, 0x3c
jne 0x530094
mov al, byte [ebx + 3]
cmp al, 0x3d
je 0x530089
cmp al, 0x21
jne 0x530094
mov dword [edi + 0x80], edx
jmp 0x530cf7
mov byte [ebp + 3], 0x8d
mov esi, dword [esp + 0x10]
add esi, edx
or ebx, 0xffffffff
mov dword [esp + 0x10], esi
mov al, byte [esi]
xor ecx, ecx
cmp al, 0x52
mov dword [esp + 0x40], 3
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ecx
jne 0x5300e4
cmp byte [esi + 1], 0x26
jne 0x5300e4
add esi, 2
mov dword [esp + 0x10], esi
mov byte [ebp + 3], 0x8f
mov esi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
jmp 0x5300fa
cmp al, 0x3c
jne 0x5301c6
mov dword [esp + 0x1c], 0x3e
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jb 0x530108
cmp al, 0x39
jbe 0x531d08
mov edx, dword [edi + 0xc]
movzx eax, al
test byte [eax + edx], 0x10
je 0x531d2d
mov ebx, esi
add esi, 1
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + edx], 0x10
mov dword [esp + 0x20], ebx
je 0x530140
mov eax, edx
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x530130
mov eax, esi
sub eax, ebx
cmp dword [esp + 0x154], 0
mov dword [esp + 0x18], eax
je 0x53015a
mov dword [esp + 0x40], 5
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x530173
mov dl, byte [esi]
add esi, 1
cmp dl, al
mov dword [esp + 0x10], esi
jne 0x531d52
mov al, byte [esi]
add esi, 1
cmp al, 0x29
mov dword [esp + 0x10], esi
jne 0x531d52
cmp dword [esp + 0x154], 0
jne 0x530cf7
mov eax, dword [esp + 0x24]
test eax, eax
jl 0x530283
test ecx, ecx
jle 0x531d7a
test eax, eax
je 0x530252
cmp eax, 0x2d
jne 0x53024f
mov edx, dword [edi + 0x40]
sub edx, ecx
add edx, 1
mov ecx, edx
jmp 0x530252
cmp al, 0x27
jne 0x5301d7
mov dword [esp + 0x1c], 0x27
jmp 0x5300f4
xor ebx, ebx
cmp al, 0x2d
mov dword [esp + 0x1c], ebx
je 0x5301fb
cmp al, 0x2b
je 0x5301fb
cmp al, 0x30
jb 0x530108
cmp al, 0x39
ja 0x5300fa
mov dword [esp + 0x24], ebx
jmp 0x530210
movzx eax, al
add esi, edx
cmp eax, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], esi
jl 0x5300fa
mov al, byte [esi]
cmp al, 0x30
jb 0x530173
lea ebx, [ebx]
cmp al, 0x39
ja 0x530173
cmp ecx, 0xccccccb
jg 0x531cc9
movzx eax, al
add esi, edx
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jae 0x530220
jmp 0x530173
add ecx, dword [edi + 0x40]
test ecx, ecx
jle 0x531d9f
cmp ecx, dword [edi + 0x44]
jg 0x531d9f
mov eax, ecx
sar eax, 8
mov byte [ebp + 4], al
mov byte [ebp + 5], cl
cmp ecx, dword [edi + 0x4c]
mov esi, dword [esp + 0x10]
jle 0x530cf7
mov dword [edi + 0x4c], ecx
jmp 0x530cf7
mov ebx, dword [edi + 0x2c]
mov edi, dword [edi + 0x30]
test edi, edi
mov dword [esp + 0x74], ebx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x24], edi
jle 0x5302fe
mov edi, dword [esp + 0x18]
test edi, edi
mov eax, dword [esp + 0x20]
lea ecx, [ebx + 2]
je 0x5302fe
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5302d2
test dl, dl
je 0x5302fe
add eax, 1
add ecx, 1
sub edi, 1
jne 0x5302b4
jmp 0x5302fe
movzx ecx, byte [ecx]
movzx edx, byte [eax]
sub edx, ecx
je 0x5302fe
mov ecx, dword [esp + 0x150]
mov eax, dword [esp + 0x3c]
add ebx, dword [ecx + 0x34]
add eax, 1
cmp eax, dword [ecx + 0x30]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x3c], eax
jl 0x5302a1
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x24]
cmp ecx, edi
jge 0x530411
movzx eax, byte [ebx + 1]
mov ah, byte [ebx]
mov edx, dword [esp + 0x150]
mov dword [esp + 0x1c], ecx
add ecx, 1
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x24], 1
cmp eax, dword [edx + 0x4c]
mov dword [esp + 0x50], eax
jle 0x53033a
mov dword [edx + 0x4c], eax
cmp ecx, edi
jge 0x530408
mov eax, dword [edx + 0x34]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x94], eax
add ebx, dword [esp + 0x94]
test edi, edi
mov eax, dword [esp + 0x20]
mov esi, edi
lea ecx, [ebx + 2]
je 0x53039d
jmp 0x530370
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x53038f
test dl, dl
je 0x53039d
add eax, 1
add ecx, 1
sub esi, 1
jne 0x530370
jmp 0x53039d
movzx ecx, byte [ecx]
movzx eax, byte [eax]
sub eax, ecx
jne 0x5303c4
cmp byte [ebx + edi + 2], 0
jne 0x5303c4
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x150]
add dword [esp + 0x24], 1
add eax, 1
cmp eax, dword [edx + 0x30]
mov dword [esp + 0x3c], eax
jl 0x530350
mov eax, dword [esp + 0x24]
cmp eax, 1
mov dword [esp + 0x74], ebx
jle 0x530408
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x40], 2
mov edi, dword [esp + 0x150]
mov edx, ecx
mov byte [ebp + 5], cl
mov ecx, eax
sar edx, 8
sar ecx, 8
add byte [ebp + 3], 1
mov byte [ebp + 6], cl
mov byte [ebp + 7], al
mov byte [ebp + 4], dl
mov esi, dword [esp + 0x10]
jmp 0x530cf7
mov eax, dword [esp + 0x50]
jmp 0x530482
cmp dword [esp + 0x1c], 0
jne 0x530b86
mov ebx, dword [esp + 0x20]
cmp byte [ebx], 0x52
jne 0x53049d
mov edi, dword [esp + 0x18]
mov edx, 1
xor eax, eax
cmp edi, edx
mov dword [esp + 0x3c], edx
jle 0x530479
mov cl, byte [ebx + edx]
cmp cl, 0x30
jb 0x531d9f
cmp cl, 0x39
ja 0x531d9f
cmp eax, 0xccccccb
jg 0x531dc4
movzx ecx, cl
add edx, 1
cmp edx, edi
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
mov dword [esp + 0x3c], edx
jl 0x530440
test eax, eax
jne 0x53047e
mov eax, 0xffff
mov byte [ebp + 3], 0x8f
mov edi, dword [esp + 0x150]
mov edx, eax
sar edx, 8
mov byte [ebp + 5], al
mov byte [ebp + 4], dl
mov esi, dword [esp + 0x10]
jmp 0x530cf7
mov edi, 6
cmp dword [esp + 0x18], edi
jne 0x530b86
mov eax, ebx
mov ecx, str.DEFINE
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5304ce
test dl, dl
je 0x5304dc
add eax, 1
add ecx, 1
sub edi, 1
jne 0x5304b3
jmp 0x5304dc
movzx ecx, byte [ecx]
movzx eax, byte [eax]
sub eax, ecx
jne 0x530b86
mov edi, dword [esp + 0x150]
mov byte [ebp + 3], 0x91
mov esi, dword [esp + 0x10]
mov dword [esp + 0x40], 1
jmp 0x530cf7
add dword [edi + 0x5c], edx
mov dword [esp + 0x2c], 0x7d
add esi, edx
jmp 0x530cf3
add esi, edx
mov dword [esp + 0x10], esi
cmp byte [esi], 0x29
jne 0x530562
mov al, byte [esi + 1]
cmp al, 0x2a
je 0x530562
cmp al, 0x2b
je 0x530562
cmp al, 0x3f
je 0x530562
cmp al, 0x7b
jne 0x530548
lea eax, [esi + 2]
call fcn.0052a7e0
test eax, eax
jne 0x530562
mov byte [ebp], 0x9d
mov esi, dword [esp + 0x10]
add ebp, edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
add esi, 1
jmp 0x52d914
add dword [edi + 0x5c], edx
mov dword [esp + 0x2c], 0x7e
jmp 0x530cf7
mov cl, byte [esi + 1]
cmp cl, 0x21
je 0x530695
cmp cl, 0x3d
je 0x530682
mov ebx, dword [edi + 0xc]
movzx ecx, cl
test byte [ecx + ebx], 0x10
je 0x531de9
sub al, 0x3c
neg al
sbb eax, eax
add esi, edx
and eax, 0xffffffe9
mov dword [esp + 0x10], esi
mov cl, byte [esi]
add eax, 0x3e
cmp cl, 0x30
mov dword [esp + 0x20], esi
jb 0x5305bd
cmp cl, 0x39
jbe 0x531e5a
mov ebx, dword [edi + 0xc]
movzx ecx, cl
test byte [ecx + ebx], 0x10
je 0x5305df
mov edi, ebx
jmp 0x5305d0
add esi, edx
mov dword [esp + 0x10], esi
movzx ecx, byte [esi]
test byte [ecx + edi], 0x10
jne 0x5305d0
mov ebp, esi
sub ebp, dword [esp + 0x20]
cmp dword [esp + 0x154], 0
je 0x5308ac
mov ecx, dword [esp + 0x150]
mov edx, dword [ecx + 0x40]
add edx, 1
cmp byte [esi], al
mov dword [esp + 0x24], edx
jne 0x531e7f
mov edx, dword [ecx + 0x30]
cmp edx, 0x2710
jge 0x531ea4
lea eax, [ebp + 3]
cmp eax, dword [ecx + 0x34]
jle 0x53062f
cmp ebp, 0x20
mov dword [ecx + 0x34], eax
jg 0x531ec9
test edx, edx
mov ebx, dword [ecx + 0x28]
mov dword [esp + 0x3c], 0
jle 0x53080e
cmp ebp, dword [ebx + 4]
jne 0x5307e3
test ebp, ebp
mov eax, dword [esp + 0x20]
mov ecx, dword [ebx]
mov edi, ebp
je 0x5307b8
jmp 0x530660
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5307aa
test dl, dl
je 0x5307b8
add eax, 1
add ecx, 1
sub edi, 1
jne 0x530660
jmp 0x5307b8
add dword [edi + 0x5c], edx
mov dword [esp + 0x2c], 0x7f
add esi, 2
jmp 0x530cf3
add dword [edi + 0x5c], edx
mov dword [esp + 0x2c], 0x80
add esi, 2
jmp 0x530cf3
mov dword [esp + 0x2c], 0x81
add esi, edx
jmp 0x530cf3
mov byte [ebp], 0x76
mov esi, dword [esp + 0x10]
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
mov dword [esp + 0x90], ebp
add ebp, edx
xor ecx, ecx
cmp al, 0x30
mov dword [esp + 0xd8], edx
jb 0x5306fb
cmp al, 0x39
ja 0x5306fb
movzx eax, al
add esi, edx
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jae 0x5306e1
cmp byte [esi], 0x29
jne 0x531e10
cmp ecx, 0xff
jg 0x531e35
mov byte [ebp], cl
mov ecx, dword [esp + 0x10]
sub ecx, dword [edi + 0x18]
add ebp, edx
add ecx, edx
sar ecx, 8
mov byte [ebp], cl
mov dl, byte [esp + 0x10]
sub dl, byte [edi + 0x18]
mov byte [ebp + 2], 0
add dl, 1
mov byte [ebp + 1], dl
mov byte [ebp + 3], 0
mov esi, dword [esp + 0x10]
add ebp, 4
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
add esi, 1
jmp 0x52d914
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x3d
je 0x530795
cmp al, 0x3e
je 0x530795
cmp al, 0x3c
je case.0x52fff9.39
mov edx, dword [esp + 0x134]
mov dword [edx], 0x29
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
xor ecx, ecx
cmp al, 0x3e
sete cl
mov dword [esp + 0x30], ecx
mov ecx, 0x29
jmp 0x5310af
movzx edx, byte [ecx]
movzx eax, byte [eax]
sub eax, edx
jne 0x5307e3
mov eax, dword [esp + 0x24]
cmp dword [ebx + 8], eax
je 0x53080e
test dword [esp + 0x44], 0x80000
je 0x531eee
mov ecx, dword [esp + 0x150]
mov dword [ecx + 0x78], 1
jmp 0x5307f0
mov edx, dword [esp + 0x24]
cmp dword [ebx + 8], edx
je 0x531f13
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x150]
add eax, 1
add ebx, 0xc
cmp eax, dword [ecx + 0x30]
mov dword [esp + 0x3c], eax
jl 0x530642
mov edi, dword [esp + 0x150]
mov ecx, dword [edi + 0x30]
cmp dword [esp + 0x3c], ecx
jl 0x5308ac
mov eax, dword [edi + 0x38]
cmp ecx, eax
jl 0x530876
lea ebx, [eax + eax]
lea edx, [ebx + ebx*2]
add edx, edx
add edx, edx
push edx
call dword [0x58ae04]
mov esi, eax
test esi, esi
je 0x531f38
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x28]
lea eax, [eax + eax*2]
add eax, eax
add eax, eax
push eax
push ecx
push esi
call fcn.00545633
add esp, 0xc
cmp dword [edi + 0x38], 0x14
jle 0x530870
mov edx, dword [edi + 0x28]
push edx
call dword [0x58ae08]
mov dword [edi + 0x28], esi
mov dword [edi + 0x38], ebx
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x28]
mov edx, dword [esp + 0x20]
lea eax, [eax + eax*2]
mov dword [ecx + eax*4], edx
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x28]
lea eax, [eax + eax*2]
mov dword [ecx + eax*4 + 4], ebp
mov eax, dword [edi + 0x30]
mov ecx, dword [esp + 0x24]
lea edx, [eax + eax*2]
mov eax, dword [edi + 0x28]
mov dword [eax + edx*4 + 8], ecx
add dword [edi + 0x30], 1
mov esi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x150]
add dword [eax + 0x40], 1
mov edx, dword [eax + 0x40]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
shr edx, 8
mov byte [ecx + 3], dl
mov al, byte [eax + 0x40]
mov byte [ecx + 4], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x40], 2
mov ebp, ecx
jmp 0x530cf7
mov ecx, 0x29
mov dword [esp + 0x30], edx
jmp 0x5310af
add esi, edx
xor ebx, ebx
mov dword [esp + 0x10], esi
cmp byte [esi], 0x29
je 0x53128b
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x1d
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, 0x29
jmp 0x530af6
test edx, 0x1000
je 0x5308b3
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov dword [esp + 0x2c], 0x83
jmp 0x530cf7
mov ecx, dword [esp + 0x44]
mov edx, dword [edi + 0x40]
mov edi, dword [esp + 0x134]
push ecx
push edx
push edi
lea eax, [esp + 0xec]
push eax
lea ecx, [esp + 0x20]
push ecx
xor ecx, ecx
mov dword [esp + 0xa0], esi
call fcn.0052a860
cmp dword [edi], 0
mov esi, eax
jne 0x5321a9
xor edx, edx
cmp esi, edx
jne 0x5309d8
cmp dword [esp + 0x38], edx
mov eax, dword [esp + 0xe0]
je 0x52ed52
cmp eax, 0x7f
jbe 0x52ed52
lea edx, [esp + 0x80]
push edx
push eax
call fcn.00543110
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov ecx, eax
jmp 0x52db01
cmp esi, 0x1a
jne 0x530a26
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x530a0b
cmp byte [esi + 2], 0x45
jne 0x530a0b
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
add esi, 2
add esi, 1
jmp 0x52d914
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov dword [esp + 0x6c], 1
add esi, 1
jmp 0x52d914
cmp esi, 0x19
je 0x52ed8b
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x530a47
lea ecx, [esi - 6]
cmp ecx, 0x10
ja 0x530a47
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp esi, 0x1b
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], ecx
jne 0x531059
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x150]
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
add esi, 1
mov dword [esp + 0x10], esi
mov cl, byte [esi]
sub cl, 0x3c
neg cl
mov dword [esp + 0x64], eax
movzx eax, byte [esi + 1]
mov dword [esp + 0x40], edx
mov dword [esp + 0x30], edx
sbb ecx, ecx
and ecx, 0xffffffe9
add ecx, 0x3e
cmp eax, 0x2b
je 0x530acb
cmp eax, 0x2d
je 0x530acb
cmp eax, 0x30
jb 0x530abe
cmp eax, 0x39
jbe 0x530acb
mov dword [esp + 0x30], 1
jmp 0x5310a6
mov al, byte [esi + 2]
cmp al, 0x30
lea edx, [esi + 2]
jb 0x530ae3
cmp al, 0x39
ja 0x530ae3
mov al, byte [edx + 1]
add edx, 1
cmp al, 0x30
jae 0x530ad5
cmp byte [edx], cl
jne 0x531f4a
mov ebp, dword [esp + 0x14]
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
movzx edx, al
cmp edx, 0x2b
jne 0x530bab
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jb 0x531f6f
cmp al, 0x39
ja 0x531f6f
mov al, byte [esi]
xor ebx, ebx
cmp al, 0x30
jb 0x530b5b
lea esp, [esp]
cmp al, 0x39
ja 0x530b5b
cmp ebx, 0xccccccb
jg 0x53202a
movzx eax, al
add esi, 1
lea ebx, [ebx + ebx*4]
lea ebx, [eax + ebx*2 - 0x30]
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jae 0x530b30
cmp byte [esi], cl
jne 0x53206a
cmp edx, 0x2d
jne 0x531040
test ebx, ebx
je 0x53208f
mov ecx, dword [edi + 0x40]
sub ecx, ebx
add ecx, 1
mov ebx, ecx
test ebx, ebx
jg 0x53128b
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0xf
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
cmp edx, 0x2d
jne 0x530b1d
mov bl, byte [esi + 1]
cmp bl, 0x30
jb case.0x52fff9.34
cmp bl, 0x39
ja case.0x52fff9.34
add esi, 1
mov dword [esp + 0x10], esi
jmp 0x530b1d
mov ebx, dword [esp + 0x150]
xor edi, edi
xor edx, edx
cmp al, 0x29
mov dword [esp + 0x24], edi
mov dword [esp + 0x48], edx
lea ecx, [esp + 0x48]
je 0x530c61
lea esp, [esp]
cmp al, 0x3a
je 0x530c59
movzx eax, al
add esi, 1
sub eax, 0x2d
cmp eax, 0x4b
mov dword [esp + 0x10], esi
ja case.0x530c15.46
movzx edx, byte [eax + 0x532408]
jmp dword [edx*4 + 0x5323e4]
lea ecx, [esp + 0x24]
jmp 0x530c53
or dword [ecx], 0x80000
or dword [ebx + 0x64], 0x400
jmp 0x530c53
or dword [ecx], 1
jmp 0x530c53
or dword [ecx], 2
jmp 0x530c53
or dword [ecx], 4
jmp 0x530c53
or dword [ecx], 8
jmp 0x530c53
or dword [ecx], 0x200
jmp 0x530c53
or dword [ecx], 0x40
mov al, byte [esi]
cmp al, 0x29
jne 0x530bf0
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x24]
or edx, dword [esp + 0x44]
not edi
and edx, edi
cmp byte [esi], 0x29
mov dword [esp + 0x48], edx
jne 0x530ce1
mov eax, dword [ebx + 0x14]
add eax, 3
cmp ebp, eax
jne 0x530c98
mov eax, dword [esp + 0x154]
test eax, eax
je 0x530c90
cmp dword [eax], 6
jne 0x530c98
mov dword [ebx + 0x60], edx
jmp 0x530cbd
mov eax, edx
shr eax, 9
and eax, 1
mov dword [esp + 0xe8], eax
xor eax, 1
mov dword [esp + 0xf0], eax
mov eax, edx
and eax, 1
mov dword [esp + 0xa4], eax
mov ecx, dword [esp + 0x128]
mov edi, dword [esp + 0x150]
mov dword [esp + 0x44], edx
mov dword [ecx], edx
mov dword [esp + 0x18], 0
add esi, 1
jmp 0x52d914
mov edi, dword [esp + 0x150]
add esi, 1
mov dword [esp + 0x2c], 0x83
mov dword [esp + 0x10], esi
add dword [edi + 0x58], 1
cmp dword [edi + 0x58], 0xfa
jg 0x531fbc
mov ecx, dword [esp + 0x2c]
lea edx, [ecx - 0x7d]
cmp edx, 3
ja 0x530d2a
xor edx, edx
cmp dword [edi + 0x80], edx
je 0x530d2c
mov dword [esp + 0x18], edx
mov dword [edi + 0x80], edx
jmp 0x530d3a
xor edx, edx
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x64], eax
cmp ecx, 0x7f
mov byte [ebp], cl
mov eax, dword [edi + 0x68]
mov esi, dword [edi + 0x40]
mov dword [esp + 0x70], ebp
mov dword [esp + 0x94], eax
mov dword [esp + 0xa0], edx
je 0x530d66
cmp ecx, 0x80
je 0x530d66
xor eax, eax
jmp 0x530d6b
mov eax, 1
mov edx, dword [esp + 0x154]
neg edx
sbb edx, edx
lea ebx, [esp + 0xa0]
and edx, ebx
push edx
mov edx, dword [esp + 0x14c]
push edi
push edx
lea edx, [esp + 0xb4]
push edx
lea edx, [esp + 0xec]
push edx
lea edx, [esp + 0xc8]
push edx
lea edx, [esp + 0x104]
push edx
xor edx, edx
cmp ecx, 0x87
mov ecx, dword [esp + 0x5c]
sete dl
add edx, dword [esp + 0x168]
push edx
mov edx, dword [esp + 0x50]
push ecx
push edx
push eax
mov eax, dword [esp + 0x160]
push eax
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0xa4]
push edx
push eax
call fcn.00532460
test eax, eax
je 0x5321a9
mov edi, dword [esp + 0x150]
mov ebx, dword [esp + 0x2c]
or eax, 0xffffffff
add dword [edi + 0x58], eax
cmp ebx, 0x81
jne 0x530ea0
cmp dword [edi + 0x40], esi
mov ebp, dword [esp + 0x14]
ja 0x530e18
mov byte [ebp], 0x82
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xb4]
mov esi, dword [esp + 0x10]
cmp byte [esi], 0x29
jne 0x532005
cmp dword [esp + 0x154], 0
je 0x530f2e
mov eax, dword [esp + 0x154]
mov eax, dword [eax]
mov ecx, dword [esp + 0xa0]
mov edx, 0x7fffffeb
sub edx, eax
lea ebx, [ecx - 6]
cmp edx, ebx
jl 0x531ba1
lea eax, [eax + ecx - 6]
mov ecx, dword [esp + 0x154]
mov dword [ecx], eax
add ebp, 1
mov byte [ebp], 0
mov al, 3
mov byte [ebp + 1], al
add ebp, 2
mov byte [ebp], 0x78
add ebp, 1
mov byte [ebp], 0
mov byte [ebp + 1], al
mov esi, dword [esp + 0x10]
add ebp, 2
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
cmp ebx, 0x7d
jl 0x530eb0
cmp ebx, 0x80
jg 0x530eb0
add dword [edi + 0x5c], eax
cmp ebx, 0x87
mov ebp, dword [esp + 0x14]
jne 0x530e18
cmp dword [esp + 0x154], 0
jne 0x530e18
mov eax, ebp
xor ecx, ecx
xor edx, edx
mov dh, byte [eax + 1]
add ecx, 1
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x78
jne 0x530ed2
cmp byte [ebp + 3], 0x91
jne 0x530f04
cmp ecx, 1
jg 0x531fe1
mov dword [esp + 0x2c], 0x91
mov ebx, dword [esp + 0x2c]
jmp 0x530e18
cmp ecx, 2
jg 0x531ff3
cmp ecx, 1
jne 0x530e18
or edx, 0xffffffff
or ecx, edx
mov dword [esp + 0xa8], edx
mov dword [esp + 0xb4], ecx
jmp 0x530e26
cmp ebx, 0x91
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], eax
je 0x531034
cmp ebx, 0x81
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x7c], eax
mov dword [esp + 0xb0], 0
jl 0x53101a
cmp eax, 0xfffffffe
jne 0x530fc9
test ecx, ecx
jl 0x530fb4
mov eax, dword [esp + 0xec]
mov dword [esp + 0x78], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0xb0], 1
mov dword [esp + 0x7c], 0xffffffff
jmp 0x530ff7
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x7c], 0xffffffff
jmp 0x530ff7
test ecx, ecx
jl 0x530ff7
test edx, edx
jge 0x530fff
mov edx, dword [esp + 0xec]
mov dword [esp + 0xdc], edx
mov edx, dword [esp + 0x94]
or edx, ecx
mov dword [esp + 0xa8], edx
test edx, edx
jl 0x531034
mov eax, dword [esp + 0xdc]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x68], eax
mov dword [esp + 0x5c], edx
add esi, 1
jmp 0x52d914
cmp dword [esp + 0x2c], 0x7d
jne 0x531034
test edx, edx
jl 0x531034
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x5c], edx
mov ebp, dword [esp + 0x14]
add esi, 1
jmp 0x52d914
cmp edx, 0x2b
jne 0x53128b
test ebx, ebx
je 0x5320b4
add ebx, dword [edi + 0x40]
jmp 0x53128b
cmp esi, 0x1c
jne 0x531531
mov esi, dword [esp + 0x10]
mov al, byte [esi + 1]
cmp al, 0x3c
je 0x531079
cmp al, 0x27
je 0x531079
cmp al, 0x7b
jne 0x5320d9
mov edi, dword [esp + 0x150]
add esi, 1
mov dword [esp + 0x10], esi
mov cl, byte [esi]
cmp cl, 0x3c
mov dword [esp + 0x30], edx
jne 0x531099
mov ecx, 0x3e
jmp 0x5310a6
sub cl, 0x27
neg cl
sbb ecx, ecx
and ecx, 0x56
add ecx, 0x27
mov ebp, dword [esp + 0x14]
mov edx, 1
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
mov ebx, esi
mov dword [esp + 0x20], ebx
jb 0x5310c9
cmp al, 0x39
jbe 0x5320f9
movzx edx, al
mov eax, dword [edi + 0xc]
test byte [edx + eax], 0x10
je 0x5310e5
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x5310d5
mov edx, dword [esp + 0x154]
mov eax, esi
sub eax, ebx
test edx, edx
mov dword [esp + 0x18], eax
je 0x5311e4
xor ebx, ebx
test eax, eax
je 0x53211e
cmp byte [esi], cl
jne 0x532143
cmp eax, 0x20
jg 0x532168
cmp dword [esp + 0x30], ebx
jne 0x531121
add dword [edi + 0x54], 1
add dword [edx], 8
cmp dword [edi + 0x7c], 0
mov eax, dword [edx]
je 0x531136
add eax, 0xc
mov dword [edx], eax
jmp 0x531280
cmp dword [edi + 0x30], 0
mov eax, dword [edi + 0x28]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x3c], 0
jle 0x531280
nop
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
cmp ecx, dword [edx + 4]
jne 0x5311c6
mov eax, dword [esp + 0x20]
mov esi, ecx
mov ecx, edx
mov ecx, dword [ecx]
jmp 0x531170
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x531187
test dl, dl
je 0x531195
add eax, 1
add ecx, 1
sub esi, 1
jne 0x531170
jmp 0x531195
movzx edx, byte [ecx]
movzx eax, byte [eax]
sub eax, edx
jne 0x5311c6
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 8]
jne 0x53128b
mov eax, dword [edi + 0x24]
test eax, eax
je 0x5311c6
mov edi, edi
movzx ecx, word [eax + 4]
cmp ecx, ebx
je 0x5311c0
mov eax, dword [eax]
test eax, eax
jne 0x5311b0
jmp 0x5311c6
mov word [eax + 6], 1
mov eax, dword [esp + 0x3c]
add dword [esp + 0x1c], 0xc
add eax, 1
cmp eax, dword [edi + 0x30]
mov dword [esp + 0x3c], eax
jl 0x531150
jmp 0x531280
mov edx, dword [edi + 0x2c]
mov edi, dword [edi + 0x30]
test edi, edi
mov dword [esp + 0x74], edx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x24], edi
jle 0x531261
mov ebx, edx
mov edi, dword [esp + 0x18]
test edi, edi
mov eax, dword [esp + 0x20]
lea ecx, [ebx + 2]
je 0x531238
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x53122e
test dl, dl
je 0x531238
add eax, 1
add ecx, 1
sub edi, 1
jne 0x531217
jmp 0x531238
movzx ecx, byte [ecx]
movzx eax, byte [eax]
sub eax, ecx
jne 0x531243
mov edx, dword [esp + 0x18]
cmp byte [ebx + edx + 2], 0
je 0x53125d
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x150]
add ebx, dword [ecx + 0x34]
add eax, 1
cmp eax, dword [ecx + 0x30]
mov dword [esp + 0x3c], eax
jl 0x531204
mov dword [esp + 0x74], ebx
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x3c], eax
jge 0x530b86
mov eax, dword [esp + 0x74]
movzx ebx, byte [eax + 1]
mov bh, byte [eax]
mov edi, dword [esp + 0x150]
cmp dword [esp + 0x30], 0
je 0x5313db
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
cmp dword [esp + 0x154], 0
mov dword [esp + 0x64], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], eax
jne 0x531387
test ebx, ebx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x150]
mov byte [ecx], 0
je 0x5312d3
mov edx, dword [esp + 0x38]
mov eax, dword [esi + 0x14]
push ebx
push edx
push eax
call fcn.0052b650
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x531341
cmp ebx, dword [esi + 0x44]
jg 0x53218d
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x3c]
mov edx, dword [esi + 0x10]
add eax, ebx
mov dword [esp + 0x1c], eax
lea eax, [ecx + edx - 0x64]
cmp dword [esi + 0x20], eax
jb 0x531319
call fcn.0052a760
test eax, eax
mov ecx, dword [esp + 0x134]
mov dword [ecx], eax
jne 0x5321a9
mov esi, dword [esp + 0x150]
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x20]
mov edx, eax
sub edx, dword [esi + 0x14]
add edx, 1
sar edx, 8
mov byte [ecx], dl
sub al, byte [esi + 0x14]
mov edx, dword [esi + 0x20]
add al, 1
mov byte [edx + 1], al
add dword [esi + 0x20], 2
jmp 0x531383
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x531387
cmp dword [esp + 0x14c], ecx
jg 0x531387
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
mov ebx, dword [esp + 0x38]
push edx
push eax
mov eax, dword [esp + 0x150]
call fcn.0052bcc0
test eax, eax
jne 0x53219c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x150]
mov byte [ecx], 0x75
mov edx, eax
sub edx, dword [esi + 0x14]
add ecx, 3
sar edx, 8
mov byte [ecx - 2], dl
sub al, byte [esi + 0x14]
cmp dword [esp + 0x34], 0xfffffffe
mov byte [ecx - 1], al
mov dword [esp + 0x14], ecx
mov dword [esp + 0xb0], 0
jne 0x53196e
mov edi, esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x34], 0xffffffff
mov ebp, ecx
add esi, 1
jmp 0x52d914
cmp dword [esp + 0x154], 0
jne 0x531548
cmp dword [edi + 0x78], 0
je 0x531548
mov esi, dword [esp + 0x3c]
mov eax, dword [edi + 0x34]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x94], esi
add esi, 1
add ecx, eax
cmp esi, dword [edi + 0x30]
mov dword [esp + 0x24], 1
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], esi
jge 0x531548
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x1c]
mov al, byte [ecx + 2]
add ecx, 2
add edx, 2
cmp al, byte [edx]
jne 0x531449
test al, al
je 0x531453
mov al, byte [ecx + 1]
add ecx, 1
add edx, 1
cmp al, byte [edx]
je 0x531438
movzx edx, byte [edx]
movzx eax, byte [ecx]
sub eax, edx
jne 0x531467
mov eax, dword [edi + 0x34]
add dword [esp + 0x24], 1
add dword [esp + 0x1c], eax
add esi, 1
cmp esi, dword [edi + 0x30]
jl 0x531423
mov ecx, dword [esp + 0x24]
cmp ecx, 1
mov dword [esp + 0x3c], esi
jle 0x531548
cmp dword [esp + 0x34], 0xfffffffe
jne 0x531487
mov dword [esp + 0x34], 0xffffffff
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
test byte [esp + 0x44], 1
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x64], eax
setne al
add al, 0x73
mov byte [ebp], al
mov eax, dword [esp + 0x94]
mov dword [esp + 0x18], ebp
add ebp, 1
mov byte [ebp + 1], al
mov edx, eax
shr edx, 8
mov byte [ebp], dl
add ebp, 2
mov eax, ecx
sar eax, 8
mov byte [ebp], al
mov byte [ebp + 1], cl
add ebp, 2
cmp dword [esp + 0x74], esi
mov dword [esp + 0x14], ebp
jae 0x531970
mov edx, dword [esp + 0x74]
mov edi, edi
movzx ecx, byte [edx + 1]
mov ch, byte [edx]
mov eax, 1
cmp ecx, 0x20
jge 0x5314f2
shl eax, cl
or dword [edi + 0x50], eax
cmp ecx, dword [edi + 0x4c]
jle 0x5314fd
mov dword [edi + 0x4c], ecx
mov eax, dword [edi + 0x24]
test eax, eax
je 0x53151a
movzx ebx, word [eax + 4]
cmp ebx, ecx
je 0x531514
mov eax, dword [eax]
test eax, eax
jne 0x531504
jmp 0x53151a
mov word [eax + 6], 1
add edx, dword [edi + 0x34]
cmp edx, esi
jb 0x5314e0
mov esi, dword [esp + 0x10]
mov dword [esp + 0x74], edx
add esi, 1
jmp 0x52d914
cmp esi, edx
jge 0x5315dc
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x150]
neg esi
mov ebx, esi
cmp dword [esp + 0x34], 0xfffffffe
jne 0x531557
mov dword [esp + 0x34], 0xffffffff
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
test byte [esp + 0x44], 1
mov dword [esp + 0x18], ebp
setne cl
add cl, 0x71
mov byte [ebp], cl
add ebp, 1
mov edx, ebx
sar edx, 8
mov byte [ebp], dl
mov byte [ebp + 1], bl
add ebp, 2
cmp ebx, 0x20
mov dword [esp + 0x64], eax
mov dword [esp + 0x14], ebp
mov eax, 1
jge 0x531596
mov ecx, ebx
shl eax, cl
or dword [edi + 0x50], eax
cmp ebx, dword [edi + 0x4c]
jle 0x5315a1
mov dword [edi + 0x4c], ebx
mov eax, dword [edi + 0x24]
test eax, eax
je 0x531970
lea esp, [esp]
movzx ecx, word [eax + 4]
cmp ecx, ebx
je 0x5315ca
mov eax, dword [eax]
test eax, eax
jne 0x5315b0
mov esi, dword [esp + 0x10]
add esi, 1
jmp 0x52d914
mov word [eax + 6], 1
mov esi, dword [esp + 0x10]
add esi, 1
jmp 0x52d914
cmp esi, 0xf
je 0x53168d
cmp esi, 0x10
je 0x53168d
cmp esi, 5
je 0x5315fd
cmp esi, 4
je 0x5315fd
cmp esi, 1
jne 0x531612
mov edi, dword [esp + 0x150]
cmp dword [edi + 0x48], edx
jne 0x531619
mov dword [edi + 0x48], 1
jmp 0x531619
mov edi, dword [esp + 0x150]
mov ebp, dword [esp + 0x14]
lea eax, [esi - 0x1d]
cmp eax, 5
ja 0x531649
mov edx, dword [esp + 0x10]
mov esi, dword [eax*4 + 0x58ad78]
add edx, 1
sub esi, 1
mov dword [esp + 0x88], edx
add esi, 1
jmp 0x52d914
lea eax, [esi - 6]
mov ecx, 0x10
cmp ecx, eax
sbb eax, eax
not eax
and eax, ebp
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
cmp dword [esp + 0x38], edx
mov dword [esp + 0x64], eax
jne 0x531675
cmp esi, 0xe
lea eax, [ecx - 3]
je 0x531677
mov eax, esi
mov byte [ebp], al
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
mov dword [esp + 0x48], edx
mov dword [esp + 0x24], edx
mov edx, edi
push edx
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x110]
call fcn.0052afe0
test eax, eax
je 0x5321a9
mov edi, dword [esp + 0x150]
mov eax, dword [edi + 0x20]
sub eax, dword [edi + 0x10]
mov ebp, dword [esp + 0x14]
mov dl, byte [esp + 0x48]
mov dword [esp + 0x64], eax
xor eax, eax
cmp esi, 0x10
sete al
mov dword [esp + 0x18], ebp
cmp eax, dword [esp + 0x100]
mov al, byte [esp + 0x24]
setne cl
add cl, 0xf
mov byte [ebp], cl
add ebp, 1
mov byte [ebp], dl
add ebp, 1
mov byte [ebp], al
mov esi, dword [esp + 0x10]
add ebp, 1
mov dword [esp + 0x14], ebp
add esi, 1
jmp 0x52d914
movzx edx, byte [esp + 0x81]
movzx eax, byte [esp + 0x82]
and edx, 0x3f
test bl, 0x10
jne 0x531738
and ebx, 0xf
shl ebx, 6
or edx, ebx
jmp 0x5317c2
and eax, 0x3f
test bl, 8
jne 0x53175a
and ebx, 7
shl ebx, 6
or edx, ebx
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x83]
jmp 0x5317c2
test bl, 4
jne 0x53178d
and ebx, 3
shl ebx, 6
or edx, ebx
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x83]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x84]
jmp 0x5317c2
and ebx, 1
shl ebx, 6
or edx, ebx
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x83]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x84]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [esp + 0x85]
and eax, 0x3f
shl edx, 6
or edx, eax
mov ebx, edx
mov eax, ebx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx edx, byte [eax + 0x56a6a0]
shl edx, 7
and ebx, 0x8000007f
jns 0x5317ee
dec ebx
or ebx, 0xffffff80
inc ebx
add edx, ebx
movzx eax, word [edx*2 + 0x56c8a0]
movzx eax, byte [eax*8 + 0x569023]
test eax, eax
je 0x531842
mov byte [ebp], 0x10
add ebp, 1
mov byte [ebp], 9
add ebp, 1
mov byte [ebp], al
add ebp, 1
cmp dword [esp + 0x34], 0xfffffffe
mov dword [esp + 0x14], ebp
jne 0x531970
mov esi, dword [esp + 0x10]
or eax, 0xffffffff
mov dword [esp + 0x7c], eax
mov dword [esp + 0x34], eax
add esi, 1
jmp 0x52d914
test byte [esp + 0x44], 1
setne dl
add dl, 0x1d
mov byte [ebp], dl
add ebp, 1
xor eax, eax
test ecx, ecx
mov dword [esp + 0x14], ebp
jbe 0x531879
mov dl, byte [esp + eax + 0x80]
mov byte [ebp], dl
add eax, 1
add ebp, 1
cmp eax, ecx
jb 0x531861
mov dword [esp + 0x14], ebp
mov dl, byte [esp + 0x80]
cmp dl, 0xd
je 0x53188a
cmp dl, 0xa
jne 0x531891
or dword [edi + 0x64], 0x800
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x53191a
cmp ecx, 1
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x7c], 0xffffffff
mov dword [esp + 0x60], eax
je 0x5318e4
cmp dword [esp + 0xa4], 0
je 0x5318e4
mov esi, dword [esp + 0x10]
or eax, 0xffffffff
mov dword [esp + 0x5c], eax
mov dword [esp + 0x34], eax
add esi, 1
jmp 0x52d914
cmp ecx, 1
mov eax, dword [esp + 0xa4]
movzx edx, dl
mov dword [esp + 0x78], edx
mov dword [esp + 0x34], eax
je 0x531970
movzx ecx, byte [ebp - 1]
mov edx, dword [edi + 0x68]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x5c], edx
add esi, 1
jmp 0x52d914
cmp ecx, 1
mov edx, dword [esp + 0x78]
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], edx
je 0x53194c
cmp dword [esp + 0xa4], 0
jne 0x531974
movzx eax, byte [ebp - 1]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x68], eax
mov eax, dword [edi + 0x68]
or eax, dword [esp + 0xa4]
add esi, 1
mov dword [esp + 0x5c], eax
jmp 0x52d914
mov edi, esi
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
add esi, 1
jmp 0x52d914
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x34
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x14
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x34
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x138]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x13c]
mov dword [ecx], edx
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x140]
mov dword [eax], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x144]
mov dword [edx], eax
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x12c]
mov dword [ecx], edx
mov ecx, dword [esp + 0x130]
mov dword [eax], ebp
mov dword [ecx], esi
mov ecx, dword [esp + 0x154]
test ecx, ecx
je 0x531a66
mov eax, dword [ecx]
mov edx, dword [esp + 0xac]
mov edi, ebp
mov ebx, 0x7fffffeb
sub edi, edx
sub ebx, eax
cmp ebx, edi
jl 0x5319a5
sub eax, edx
add eax, ebp
mov dword [ecx], eax
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x114
ret 0x30
mov cl, byte [esi + 1]
mov edx, dword [esp + 0x134]
sub cl, 0x3a
neg cl
pop edi
sbb ecx, ecx
and ecx, 0x12
add ecx, 0xd
mov dword [edx], ecx
mov edx, dword [esp + 0x12c]
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x1f
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x1e
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, edi
mov dword [edx], 0x47
jmp 0x5321a9
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 7
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, esi
mov dword [ecx], 0x53
jmp 0x5321a9
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 8
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 6
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 9
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x14
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x14
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x4b
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x3c
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x3b
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x42
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x3b
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x3c
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov al, byte [esi]
cmp al, 0x30
jb 0x531ce3
cmp al, 0x39
ja 0x531ce3
add esi, edx
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jae 0x531cd3
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x3d
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x54
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x1c
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
sub esi, 1
pop edi
mov dword [ecx], 0x1a
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x23
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0xf
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x3d
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
add esi, edx
mov edx, dword [esp + 0x134]
mov dword [edx], 0x18
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x27
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x26
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x54
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x2a
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x31
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x30
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x2b
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x41
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov dword [eax], 0x15
jmp 0x5321a9
mov edx, dword [esp + 0x134]
mov dword [edx], 0x39
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x3f
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
sub esi, 1
pop edi
mov dword [ecx], 0xc
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x52
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov dword [eax], 0x36
jmp 0x5321a9
mov ecx, dword [esp + 0x134]
mov dword [ecx], 0x1b
jmp 0x5321a9
mov edx, dword [esp + 0x134]
mov dword [edx], 0xe
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov al, byte [esi]
cmp al, 0x30
jb 0x532045
cmp al, 0x39
ja 0x532045
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x30
jae 0x532034
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x3d
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x1d
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x3a
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x3a
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x130]
mov eax, edi
pop edi
mov dword [eax], 0x45
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x54
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0x3e
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [eax], 0x2a
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
pop edi
mov dword [ecx], 0x30
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30
mov edx, dword [esp + 0x134]
mov dword [edx], 0xf
jmp 0x5321a9
mov eax, dword [esp + 0x134]
mov dword [eax], 0x28
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x130]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x114
ret 0x30