Function at 0x8520e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x15c
mov eax, dword [esp + 0x170]
mov dword [esp + 0x134], ecx
mov esi, dword [ecx]
mov dword [esp + 0xc0], 0
mov dword [esp + 0x13c], edx
mov ecx, dword [edx]
mov dword [esp + 0xc8], ecx
mov eax, dword [eax]
mov dword [esp + 8], eax
mov ecx, esi
and ecx, 0x800
mov dword [esp + 0x88], ecx
sete byte [esp + 0x5b]
mov dword [esp + 0x28], esi
mov edx, esi
shr edx, 9
and edx, 1
mov ebx, dword [esp + 0x194]
test ebx, ebx
setne cl
mov esi, dword [esp + 0x190]
mov edi, ebx
je 0x852159
lea edi, [esp + 0xc0]
mov dword [esp + 0x138], edi
mov edi, dword [esp + 0x88]
shr edi, 0xb
mov dword [esp + 0x94], edi
mov dword [esp + 0xd8], edx
xor edx, 1
mov dword [esp + 0xf0], edx
xor edx, edx
mov dl, cl
mov ecx, dword [esp + 0x28]
and ecx, 1
mov dword [esp + 0xb4], ecx
or edx, 2
mov dword [esp + 0xec], edx
lea ecx, [esi + 0x88]
mov dword [esp + 0xbc], ecx
lea ecx, [esi + 0x64]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x30], 0xfffffffe
mov dword [esp + 0x38], 0
mov dword [esp + 0x84], 0
mov edi, 0
mov dword [esp + 0x60], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0x2c], 0
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xb8], ecx
mov edx, ecx
mov dword [esp + 0xdc], 0
mov dword [esp + 0x54], 0xfffffffe
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x18], 0xfffffffe
mov dword [esp + 0x1c], 0xfffffffe
mov dword [esp + 0x24], 0
mov dword [esp + 0x40], 0
jmp 0x85225b
mov eax, dword [esp + 8]
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], edx
jmp 0x852280
add ecx, 0xe
mov dword [esp + 8], eax
mov dword [esp + 0x60], ecx
jmp 0x852280
mov eax, str._b__w_
jmp 0x852261
movzx eax, word [eax]
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x852299
test ax, ax
jne 0x852299
mov dword [esp + 8], ecx
movzx eax, word [ecx]
xor ecx, ecx
mov dword [esp + 0x60], ecx
test ebx, ebx
je 0x852340
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x3c]
lea esi, [ecx + edx*2 - 0xc8]
mov ebp, dword [esp + 4]
cmp ebp, esi
mov esi, ebp
ja 0x857518
mov ecx, dword [esp + 0xb8]
cmp esi, ecx
jb 0x8522cd
mov ecx, esi
mov edx, dword [ebx]
mov ebp, 0x7fffffeb
sub ebp, edx
mov esi, ecx
sub esi, dword [esp + 0xb8]
sar esi, 1
cmp ebp, esi
jl 0x8575ae
add edx, esi
mov dword [ebx], edx
test edi, edi
je 0x852360
mov edx, edi
sub edx, dword [esp + 0xc8]
jbe 0x852369
mov esi, ecx
sub esi, edi
je 0x85231b
mov ebp, dword [esp + 0xc8]
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi]
inc edi
mov byte [ebp], bl
inc ebp
dec esi
jne 0x852310
sub ecx, edx
mov edi, dword [esp + 0xc8]
mov dword [esp + 0xb8], ecx
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0x194]
jmp 0x852374
mov ecx, dword [esi + 0x3c]
add ecx, ecx
add ecx, dword [esi + 0x10]
cmp dword [esi + 0x20], ecx
jbe 0x85237b
jmp 0x857537
xor edi, edi
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xb8], ecx
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x190]
movzx ecx, ax
test cx, cx
je 0x8523ba
cmp ecx, 0x5c
jne 0x852399
mov eax, dword [esp + 8]
movzx edx, word [eax + 2]
cmp edx, 0x45
je 0x852875
cmp dword [esp + 0x2c], 0
jne 0x8527a0
cmp ecx, 0x5c
jne 0x8523ba
mov eax, dword [esp + 8]
movzx edx, word [eax + 2]
cmp edx, 0x51
je 0x852886
test byte [esp + 0x28], 8
je 0x85253b
cmp ecx, 0xff
ja 0x85253b
mov ebp, dword [esp + 8]
mov edx, dword [esi + 0xc]
lea eax, [ebp + 2]
nop
nop
nop
nop
nop
test byte [edx + ecx], 1
je 0x852400
mov dword [esp + 8], eax
movzx ecx, word [eax]
add eax, 2
cmp ecx, 0x100
jb 0x8523e0
jmp 0x852530
cmp ecx, 0x23
jne 0x852530
mov dword [esp + 8], eax
mov cx, word [eax]
test cx, cx
je 0x852512
nop
nop
nop
nop
nop
nop
nop
mov edx, esi
mov esi, dword [edx + 0x1c]
mov edx, dword [edx + 0x84]
test edx, edx
je 0x852470
cmp eax, esi
jae 0x8524d0
sub esp, 0xc
push dword [esp + 0xa0]
push dword [esp + 0xcc]
push esi
push edx
push eax
call fcn.00869060
add esp, 0x20
test eax, eax
jne 0x8526c7
mov esi, dword [esp + 8]
jmp 0x8524d2
mov edx, dword [esp + 0xbc]
mov edx, dword [edx]
lea ebx, [edx + edx]
sub esi, ebx
cmp eax, esi
jbe 0x85248d
mov esi, eax
mov ebx, dword [esp + 0x194]
jmp 0x8524d2
mov esi, dword [esp + 0x190]
cmp cx, word [esi + 0x8c]
mov ebx, dword [esp + 0x194]
jne 0x8524d0
cmp edx, 1
je 0x8526df
movzx ecx, word [eax + 2]
cmp cx, word [esi + 0x8e]
mov esi, eax
jne 0x8524d2
jmp 0x8526e4
mov esi, eax
lea eax, [esi + 2]
cmp dword [esp + 0x88], 0
mov dword [esp + 8], eax
je 0x8524ff
movzx ecx, word [eax]
mov edx, ecx
and edx, 0xfc00
cmp edx, 0xdc00
jne 0x852502
add esi, 4
mov dword [esp + 8], esi
mov eax, esi
mov cx, word [eax]
test cx, cx
mov esi, dword [esp + 0x190]
jne 0x852420
mov ecx, 0x23
cmp eax, ebp
ja 0x852280
jmp 0x85253b
add eax, 0xfffffffe
cmp eax, ebp
ja 0x852280
xor eax, eax
cmp ecx, 0x3e
jg 0x8525f8
lea edx, [ecx - 0x2a]
cmp edx, 2
jb 0x852663
cmp ecx, 0x28
jne 0x852748
mov eax, dword [esp + 8]
movzx edx, word [eax + 2]
cmp edx, 0x3f
jne 0x852575
movzx edx, word [eax + 4]
cmp edx, 0x23
je 0x8538c7
xor eax, eax
cmp dword [esp + 0x60], 0
jne 0x852753
cmp dword [esp + 0x84], 0
je 0x852753
test al, al
jne 0x852753
mov edx, dword [esp + 0xdc]
test edx, edx
lea edx, [edx - 1]
mov dword [esp + 0xdc], edx
mov edx, dword [esp + 0x84]
jg 0x8525b9
mov edx, 0
jg 0x8526d6
test ebx, ebx
jne 0x8526d6
mov edx, dword [esp + 8]
sub edx, dword [esi + 0x18]
shr edx, 1
mov ebp, dword [esp + 0x84]
movzx esi, word [ebp + 4]
sub edx, esi
mov esi, dword [esp + 0x190]
mov word [ebp + 6], dx
mov dword [esp + 0x84], 0
jmp 0x852753
cmp ecx, 0x3f
je 0x852663
cmp ecx, 0x7b
jne 0x852748
mov eax, dword [esp + 8]
movzx edx, word [eax + 2]
add edx, 0xffffffd0
movzx esi, dx
xor edx, edx
cmp esi, 9
ja 0x85273c
add eax, 6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [eax - 2]
lea esi, [edx - 0x30]
movzx esi, si
add eax, 2
cmp esi, 0xa
jb 0x852630
movzx esi, dx
cmp esi, 0x2c
je 0x852704
mov edx, 1
cmp esi, 0x7d
je 0x85273c
xor edx, edx
jmp 0x85273c
mov al, 1
cmp ecx, 0x7c
ja case.0x85266e.1
jmp dword [ecx*4 + 0x857910]
mov eax, dword [esp + 8]
add eax, 2
sub esp, 4
push 6
push 0x89cf3c
push eax
call fcn.00869320
add esp, 0x10
test eax, eax
mov ecx, dword [esp + 8]
je 0x85226e
add ecx, 2
sub esp, 4
push 6
push str._:_:__
push ecx
call fcn.00869320
add esp, 0x10
test eax, eax
jne 0x85289e
mov eax, str._b___w_
mov ecx, dword [esp + 8]
jmp 0x852261
mov eax, dword [esp + 0xbc]
mov edx, dword [eax]
mov eax, dword [esp + 8]
jmp 0x8526e4
mov dword [esp + 0x84], edx
jmp 0x852753
mov edx, 1
lea eax, [eax + edx*2]
mov dword [esp + 8], eax
mov ecx, 0x23
mov esi, dword [esp + 0x190]
cmp eax, ebp
ja 0x852280
jmp 0x85253b
movzx esi, word [eax - 2]
mov edx, 1
cmp esi, 0x7d
je 0x85273c
add esi, 0xffffffd0
movzx esi, si
xor edx, edx
cmp esi, 9
ja 0x85273c
nop
movzx edx, word [eax]
lea esi, [edx - 0x30]
movzx esi, si
add eax, 2
cmp esi, 0xa
jb 0x852720
movzx eax, dx
xor edx, edx
cmp eax, 0x7d
sete dl
test edx, edx
setne al
mov esi, dword [esp + 0x190]
cmp dword [esp + 0x60], 0
je 0x852582
mov edx, dword [esp + 0x28]
test dh, 0x40
sete dl
cmp dword [esp + 0x60], 0
jne 0x852794
or dl, al
jne 0x852794
mov edx, dword [esp + 8]
mov ebp, dword [esp + 4]
mov dword [ebp], 0xff0076
sub edx, dword [esi + 0x18]
shr edx, 1
mov word [ebp + 4], dx
mov word [ebp + 6], 0
mov dword [esp + 0x84], ebp
lea ebp, [ebp + 8]
mov dword [esp + 4], ebp
cmp ecx, 0x7c
jbe switch.0x0085266e
jmp case.0x85266e.1
test ebx, ebx
jne 0x8527c8
cmp dword [esp + 0x84], 0
je 0x8527c8
mov eax, dword [esp + 8]
sub eax, dword [esi + 0x18]
shr eax, 1
mov edi, dword [esp + 0x84]
movzx edx, word [edi + 4]
sub eax, edx
mov word [edi + 6], ax
mov dword [esp + 0x84], 0
mov eax, dword [esp + 0x28]
test ah, 0x40
je case.0x85266e.1
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
mov dword [edx], 0xff0076
sub eax, dword [esi + 0x18]
shr eax, 1
mov word [edx + 4], ax
mov word [edx + 6], 0
mov dword [esp + 0x84], edx
lea eax, [edx + 8]
mov dword [esp + 4], eax
cmp dword [esp + 0x88], 0
mov word [esp + 0x120], cx
mov eax, 1
je 0x853bec
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x853bec
mov ecx, dword [esp + 8]
movzx edx, word [ecx + 2]
mov esi, edx
and esi, 0xfc00
mov eax, 1
cmp esi, 0xdc00
jne 0x852865
add ecx, 2
mov dword [esp + 8], ecx
mov word [esp + 0x122], dx
mov eax, 2
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x190]
jmp 0x853bf0
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 0x2c], 0
jmp 0x852895
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 0x2c], 1
mov ebp, dword [esp + 4]
jmp 0x8544f8
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 8]
movzx eax, word [ecx + 2]
mov edx, eax
add edx, 0xffffffd2
movzx esi, dx
cmp esi, 0xf
ja 0x852929
mov esi, 0x9001
bt esi, edx
jae 0x852929
lea edx, [ecx + 4]
jmp 0x8528d3
add edx, 2
movsx ebx, word [edx]
movzx esi, bx
cmp ebx, 0x5b
jg 0x8528f0
cmp esi, 0x5b
jne 0x85290c
cmp word [edx + 2], ax
jne 0x852911
jmp 0x852929
cmp esi, 0x5c
jne 0x852924
movzx esi, word [edx + 2]
and esi, 0xfffe
cmp esi, 0x5c
jne 0x852911
add edx, 2
add edx, 2
jmp 0x8528d3
test bx, bx
je 0x852929
cmp bx, ax
jne 0x8528d0
movzx esi, word [edx + 2]
cmp esi, 0x5d
jne 0x8528d0
jmp 0x8575d5
cmp esi, 0x5d
jne 0x852911
sar dword [esp + 0x38], 1
xor ebp, ebp
jmp 0x852948
mov ax, word [edx + 2]
mov ecx, edx
mov ebp, esi
lea edx, [ecx + 2]
mov dword [esp + 8], edx
movzx ebx, ax
cmp ebx, 0x5c
jne 0x852970
movzx eax, word [ecx + 4]
add ecx, 4
cmp eax, 0x45
jne 0x852990
mov dword [esp + 8], ecx
mov edx, ecx
mov esi, ebp
jmp 0x852940
test ebp, ebp
jne 0x8529b6
mov esi, 1
movzx ecx, ax
cmp ecx, 0x5e
je 0x852940
jmp 0x8529b6
sub esp, 4
push 3
push 0x89cf72
push ecx
call fcn.00869320
add esp, 0x10
test eax, eax
jne 0x852a1a
mov edx, dword [esp + 8]
add edx, 6
mov dword [esp + 8], edx
mov esi, ebp
jmp 0x852940
cmp ebx, 0x5d
jne 0x852a81
mov esi, dword [esp + 0x190]
test byte [esi + 0x63], 2
mov ecx, dword [esp + 0x60]
je 0x852a2a
test ebp, ebp
mov ax, 0x9d
je 0x8529dc
mov ax, 0xd
mov ecx, dword [esp + 4]
mov word [ecx], ax
mov eax, dword [esp + 0x1c]
cmp eax, 0xfffffffe
mov ecx, 0xffffffff
mov ebx, dword [esp + 0x194]
je 0x8529fa
mov ecx, eax
mov eax, dword [esp + 4]
mov edi, eax
lea eax, [eax + 2]
mov ebp, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], ecx
jmp 0x8544f8
mov ebx, 0x5c
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xa4], ebp
mov eax, dword [esp + 4]
lea edi, [eax + 6]
mov dword [esp + 0x48], edi
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
jmp 0x852aea
mov ecx, dword [esp + 4]
lea edi, [ecx + 6]
mov dword [esp + 0x48], edi
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
test ax, ax
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 0x60]
je 0x853e90
mov dword [esp + 0xa4], ebp
mov eax, dword [esp + 0x28]
mov edx, eax
and edx, 1
mov dword [esp + 0x90], edx
and eax, 0x800
cmp eax, 1
sbb eax, eax
or eax, 0x10ffff
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x34], 0
xor eax, eax
mov dword [esp + 0x14], edi
jmp 0x8533b0
mov esi, dword [esp + 0x190]
movzx eax, word [edx - 6]
cmp eax, 0x51
jne 0x852baa
lea eax, [edx - 4]
mov dword [esp + 8], eax
movzx ebp, word [edx - 4]
cmp ebp, 0x5c
jne 0x852bb1
movzx eax, word [edx - 2]
cmp eax, 0x45
jne 0x852bcc
mov dword [esp + 8], edx
movzx ebp, word [edx]
add edx, 8
cmp ebp, 0x5c
je 0x852b3f
add edx, 0xfffffff8
mov dword [esp + 0x2c], 0
jmp 0x852bbc
mov esi, dword [esp + 0x190]
jmp 0x852be3
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1f
mov ecx, 6
xor ebp, ebp
mov edi, edx
cmp ecx, 0x12
jne 0x85316c
jmp 0x853174
add edx, 0xfffffff8
xor ecx, ecx
jmp 0x852bd4
add edx, 0xfffffffc
mov dword [esp + 0x2c], 1
mov eax, edx
test bp, bp
jne 0x8537d5
jmp 0x8537f9
add edx, 0xfffffffc
mov ecx, 1
mov eax, edx
mov dword [esp + 0x2c], ecx
test ecx, ecx
setne dl
mov bp, 0x5c
movzx ebp, bp
cmp dword [esp + 0x88], 0
mov dword [esp + 0x100], ebp
je 0x852c2f
mov ecx, ebp
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x852c2f
shl ebp, 0xa
and ebp, 0xffc00
movzx ecx, word [eax + 2]
add eax, 2
and ecx, 0x3ff
lea ebp, [ebp + ecx + 0x10000]
mov dword [esp + 0x100], ebp
mov dword [esp + 8], eax
test dl, dl
jne 0x853143
cmp ebp, 0x5b
je 0x852c89
cmp ebp, 0x5c
jne 0x853143
lea ecx, [esp + 8]
lea edx, [esp + 0x100]
push 1
push dword [esp + 0x2c]
push dword [esi + 0x40]
mov eax, dword [esp + 0x180]
mov esi, eax
push esi
call fcn.00858430
add esp, 0x10
mov ecx, 6
cmp dword [esi], 0
mov ebp, dword [esp + 0x2c]
je 0x852e53
mov esi, dword [esp + 0x190]
jmp 0x853161
movzx ecx, word [eax + 2]
mov ebp, 0x5b
lea edx, [ecx - 0x2e]
movzx esi, dx
cmp esi, 0xf
ja 0x85313c
mov esi, 0x9001
bt esi, edx
mov esi, dword [esp + 0x190]
jae 0x853143
add eax, 4
jmp 0x852cbe
add eax, 2
movsx edx, word [eax]
mov ebp, 0x5b
movzx esi, dx
cmp edx, 0x5b
jg 0x852ce5
cmp esi, 0x5b
jne 0x852d08
cmp word [eax + 2], cx
mov esi, dword [esp + 0x190]
jne 0x852d29
jmp 0x852f19
cmp esi, 0x5c
jne 0x852d19
movzx esi, word [eax + 2]
and esi, 0xfffe
cmp esi, 0x5c
mov esi, dword [esp + 0x190]
jne 0x852d29
add eax, 2
add eax, 2
jmp 0x852cbe
test dx, dx
mov esi, dword [esp + 0x190]
jne 0x852d29
jmp 0x853143
cmp esi, 0x5d
mov esi, dword [esp + 0x190]
je 0x853143
cmp dx, cx
jne 0x852cbb
movzx edx, word [eax + 2]
cmp edx, 0x5d
jne 0x852cbb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x53
jmp 0x853158
test ebx, ebx
js 0x8536ae
xor edi, edi
cmp ebx, 3
jl 0x852d5a
mov edi, ebx
cmp dword [esp + 0x90], 0
mov esi, dword [esp + 0x190]
jne 0x852d6d
mov edi, ebx
test dword [esp + 0x28], 0x20000000
mov ebx, dword [esp + 0xb0]
jne 0x853191
shl edi, 2
mov eax, dword [edi + edi*2 + 0x89cfe8]
mov edx, edi
mov edi, dword [esp + 0xac]
mov ecx, dword [edi + eax + 0x1c]
mov dword [esp + 0x11c], ecx
mov ecx, dword [edi + eax + 0x18]
mov dword [esp + 0x118], ecx
mov ecx, dword [edi + eax + 0x14]
mov dword [esp + 0x114], ecx
mov ecx, dword [edi + eax + 0x10]
mov dword [esp + 0x110], ecx
mov ecx, dword [edi + eax + 0xc]
mov dword [esp + 0x10c], ecx
mov ecx, dword [edi + eax + 8]
mov dword [esp + 0x108], ecx
mov ecx, dword [edi + eax]
mov eax, dword [edi + eax + 4]
mov dword [esp + 0x104], eax
mov dword [esp + 0x100], ecx
mov ecx, dword [edx + edx*2 + 0x89cfec]
mov eax, dword [edx + edx*2 + 0x89cff0]
test ecx, ecx
js 0x852e2c
add edi, ecx
xor ecx, ecx
test eax, eax
js 0x852e19
movzx edx, byte [edi + ecx]
or byte [esp + ecx + 0x100], dl
inc ecx
cmp ecx, 0x20
jne 0x852e06
jmp 0x852e2c
movzx edx, byte [edi + ecx]
not dl
and byte [esp + ecx + 0x100], dl
inc ecx
cmp ecx, 0x20
jne 0x852e19
mov ecx, eax
sar ecx, 0x1f
add eax, ecx
xor eax, ecx
cmp eax, 1
je 0x853231
cmp eax, 2
jne 0x85323f
mov al, 0x7f
mov ecx, 0xb
jmp 0x853238
cmp eax, 5
je 0x85312c
test eax, eax
mov esi, dword [esp + 0x190]
jne 0x85317d
mov ebp, dword [esp + 0x100]
cmp ebp, ebx
jb 0x85314b
jmp 0x852f26
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
sub esp, 4
lea ecx, [esp + 0xc]
lea edx, [esp + 0x104]
push dword [esp + 0x178]
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0xdc]
push eax
call fcn.00858f10
add esp, 0x10
test eax, eax
je 0x8531f3
xor ecx, ecx
cmp ebp, 0x10
sete cl
xor eax, eax
cmp dword [esp + 0x100], ecx
sete al
add eax, 3
mov ecx, dword [esp + 0x48]
mov word [ecx], ax
movzx eax, word [esp + 0xd0]
mov word [ecx + 2], ax
movzx eax, word [esp + 0xcc]
lea edx, [ecx + 6]
mov dword [esp + 0x48], edx
mov word [ecx + 4], ax
mov ecx, 0x12
mov dword [esp + 0x3c], 1
jmp 0x8531fe
mov ebp, 0x5b
cmp ebp, ebx
jb 0x85314b
je 0x8537fd
cmp ebp, 0xd
je 0x852f36
cmp ebp, 0xa
jne 0x852f41
mov eax, dword [esp + 0xc4]
or byte [eax + 1], 8
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push ebp
push ebx
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
add dword [esp + 0x20], eax
mov ecx, 0x12
mov eax, 2
mov ebp, dword [esp + 0x2c]
jmp 0x853165
xor ecx, ecx
movzx edx, byte [eax + ecx + 0x40]
not dl
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852f71
jmp 0x852fe3
xor ecx, ecx
movzx edx, byte [eax + ecx + 0x40]
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852f88
jmp 0x85311d
xor ecx, ecx
movzx edx, byte [eax + ecx]
not dl
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852fa0
jmp 0x852fe3
xor ecx, ecx
movzx edx, byte [eax + ecx]
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852fb6
jmp 0x85311d
xor ecx, ecx
movzx edx, byte [eax + ecx + 0xa0]
not dl
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852fcd
mov dword [esp + 0x34], 1
jmp 0x85311d
xor ecx, ecx
movzx edx, byte [eax + ecx + 0xa0]
or byte [esp + ecx + 0x64], dl
inc ecx
xor ebp, ebp
cmp ecx, 0x20
jne 0x852ff2
jmp 0x85311d
test byte [esp + 0x28], 0x40
jne 0x8577ee
mov eax, dword [esp + 8]
movzx ebx, word [eax]
jmp case.0x853586.5
mov ebp, dword [0x89e628]
test ebp, ebp
je 0x853296
lea eax, [ebp - 1]
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push eax
push 0
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
cmp ebp, 0xffffffff
jne 0x853298
jmp 0x85311b
mov eax, dword [0x89e628]
cmp eax, 0xffffffff
je 0x85311b
mov dword [esp + 0x2c], ebx
mov ebx, 0x89e628
mov ecx, eax
inc ecx
cmp ecx, dword [ebx + 4]
lea ebx, [ebx + 4]
je 0x853072
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push dword [ebx - 4]
push eax
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
mov eax, dword [ebx]
xor ebp, ebp
cmp eax, 0xffffffff
jne 0x853070
jmp 0x85332e
mov ebp, dword [0x89e678]
test ebp, ebp
je 0x8532e2
lea eax, [ebp - 1]
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push eax
push 0
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
cmp ebp, 0xffffffff
jne 0x8532e4
jmp 0x85311b
mov eax, dword [0x89e678]
cmp eax, 0xffffffff
je 0x85311b
mov dword [esp + 0x2c], ebx
mov ebx, 0x89e678
mov ecx, eax
inc ecx
cmp ecx, dword [ebx + 4]
lea ebx, [ebx + 4]
je 0x8530eb
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push dword [ebx - 4]
push eax
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
mov eax, dword [ebx]
xor ebp, ebp
cmp eax, 0xffffffff
jne 0x8530e9
jmp 0x85332e
xor ebp, ebp
mov dword [esp + 0xc], edi
mov eax, ebx
mov dword [esp + 0x20], eax
jmp case.0x853586.25
mov dword [esp + 0x100], 8
mov ebp, 8
mov esi, dword [esp + 0x190]
cmp ebp, ebx
jae 0x852f26
mov eax, dword [esp + 0x174]
mov dword [eax], 8
mov ecx, 6
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0xc]
mov edi, eax
cmp ecx, 0x12
je 0x853174
test ecx, ecx
jne 0x854958
mov dword [esp + 0xc], edi
jmp case.0x853586.25
mov eax, dword [esp + 0x174]
mov dword [eax], 0x53
mov ecx, 6
jmp 0x853161
test ebx, ebx
mov eax, ebx
je 0x85319c
mov eax, 0xe
add eax, edi
mov ecx, 0x62bd8af
bt ecx, eax
mov edx, dword [esp + 0xc]
jb 0x85320e
lea eax, [edi - 8]
cmp eax, 2
ja 0x85333f
add eax, 0xb
add ebx, 3
mov ecx, dword [esp + 0x48]
mov word [ecx], bx
mov word [ecx + 2], ax
lea eax, [ecx + 6]
mov dword [esp + 0x48], eax
mov word [ecx + 4], 0
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov ecx, 0x12
mov dword [esp + 0x3c], 1
jmp 0x852b98
mov ecx, 6
mov eax, ebx
mov dword [esp + 0x20], eax
xor ebp, ebp
cmp ecx, 0x12
jne 0x85316c
jmp 0x853174
mov eax, dword [eax*4 + 0x89cf78]
add eax, 0xfffffffe
mov dword [esp + 8], eax
mov ecx, 0x12
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x60], eax
jmp 0x852b98
mov al, 0xc3
mov ecx, 1
and byte [esp + ecx + 0x100], al
xor eax, eax
test ebx, ebx
je 0x853262
mov edx, dword [esp + 0x8c]
movzx ecx, byte [esp + eax + 0x100]
not cl
or byte [esp + eax + 0x64], cl
inc eax
cmp eax, 0x20
jne 0x85324c
jmp 0x85327b
mov edx, dword [esp + 0x8c]
movzx ecx, byte [esp + eax + 0x100]
or byte [esp + eax + 0x64], cl
inc eax
cmp eax, 0x20
jne 0x853269
mov dword [esp + 8], edx
mov ecx, 0x12
mov edx, 2
mov dword [esp + 0x20], 1
jmp 0x852b98
xor ebp, ebp
mov dword [esp + 0x2c], ebx
mov ebx, 0x89e62c
jmp 0x8532a8
add ebx, 4
mov ebp, eax
mov eax, dword [ebx]
inc ebp
cmp eax, ebp
je 0x8532a3
cmp eax, 0xffffffff
mov esi, dword [esp + 0x44]
je 0x8532bb
dec eax
mov esi, eax
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push esi
push ebp
mov esi, dword [esp + 0x198]
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
mov eax, dword [ebx]
cmp eax, 0xffffffff
jne 0x8532a3
jmp 0x85332c
xor ebp, ebp
mov dword [esp + 0x2c], ebx
mov ebx, 0x89e67c
jmp 0x8532f4
add ebx, 4
mov ebp, eax
mov eax, dword [ebx]
inc ebp
cmp eax, ebp
je 0x8532ef
cmp eax, 0xffffffff
mov esi, dword [esp + 0x44]
je 0x853307
dec eax
mov esi, eax
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push esi
push ebp
mov esi, dword [esp + 0x198]
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
mov eax, dword [ebx]
cmp eax, 0xffffffff
jne 0x8532ef
xor ebp, ebp
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
jmp case.0x853586.25
test ebx, ebx
je 0x852d82
cmp dword [esp + 0x10], 0
jne 0x85335b
movzx eax, word [ebp + 4]
cmp eax, 0x5d
je 0x852d82
mov eax, dword [esp + 0x48]
lea ecx, [eax + 2]
mov dword [esp + 0x48], ecx
mov word [eax], 2
sub esp, 8
push ecx
push pe_nt_image_headers32
call fcn.008691e0
add esp, 0x10
add eax, eax
add eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
sub esp, 8
push eax
push 0x10ffff
call fcn.008691e0
add esp, 0x10
add eax, eax
add dword [esp + 0x48], eax
jmp 0x852d82
mov dword [esp + 0x60], ecx
cmp dword [esp + 0x88], 0
je 0x853406
mov ecx, ebx
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x853406
mov ecx, dword [esp + 8]
movzx ebx, word [ecx]
mov edx, ebx
and edx, 0xfc00
cmp edx, 0xd800
jne 0x853406
shl ebx, 0xa
and ebx, 0xffc00
movzx edx, word [ecx + 2]
add ecx, 2
and edx, 0x3ff
lea ebx, [ebx + edx + 0x10000]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x48]
cmp ecx, edi
mov edx, 1
ja 0x853415
mov edx, eax
cmp dword [esp + 0x194], 0
je 0x853432
sub ecx, edi
jbe 0x853432
sar ecx, 1
mov eax, dword [esp + 0x194]
add dword [eax], ecx
mov dword [esp + 0x48], edi
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x10], edx
je 0x85346a
cmp ebx, 0x5c
jne case.0x853586.5
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
mov ebx, 0x5c
cmp ecx, 0x45
jne case.0x853586.5
add eax, 2
mov dword [esp + 8], eax
xor ebp, ebp
jmp case.0x853586.25
cmp ebx, 0x5c
je 0x853544
cmp ebx, 0x5b
jne case.0x853586.5
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
mov ebx, 0x5b
lea edx, [ecx - 0x2e]
movzx esi, dx
cmp esi, 0xf
ja 0x8536d7
mov esi, 0x9001
bt esi, edx
mov esi, dword [esp + 0x190]
jae case.0x853586.5
lea edi, [eax + 4]
mov ebp, edi
jmp 0x8534c3
add ebp, 2
movsx edx, word [ebp]
mov ebx, 0x5b
movzx esi, dx
cmp edx, 0x5b
jg 0x8534f0
cmp esi, 0x5b
jne 0x853510
cmp word [ebp + 2], cx
mov esi, dword [esp + 0x190]
jne 0x853520
jmp 0x8536d0
cmp esi, 0x5c
jne 0x853533
movzx esi, word [ebp + 2]
and esi, 0xfffe
cmp esi, 0x5c
mov esi, dword [esp + 0x190]
jne 0x853520
add ebp, 2
jmp 0x8534c0
test dx, dx
mov esi, dword [esp + 0x190]
je case.0x853586.5
cmp dx, cx
jne 0x8534c0
movzx edx, word [ebp + 2]
cmp edx, 0x5d
jne 0x8534c0
jmp 0x853610
cmp esi, 0x5d
mov esi, dword [esp + 0x190]
jne 0x853520
jmp case.0x853586.5
lea ecx, [esp + 8]
lea edx, [esp + 0xe0]
push 1
push dword [esp + 0x2c]
push dword [esi + 0x40]
mov eax, dword [esp + 0x180]
mov esi, eax
push esi
call fcn.00858430
add esp, 0x10
cmp dword [esi], 0
mov esi, dword [esp + 0x190]
jne 0x8575bb
cmp eax, 0x1a
ja case.0x853586.1
xor ebp, ebp
mov ebx, 8
jmp dword [eax*4 + 0x857fc0]
mov ebx, dword [esp + 0xe0]
jmp case.0x853586.5
mov ebp, eax
lea ecx, [eax - 6]
cmp ecx, 0x1c
mov edi, dword [esp + 0xc]
ja case.0x8535b8.12
mov eax, dword [esi + 8]
mov edx, dword [esp + 0x20]
lea ebx, [edx + 1]
lea edi, [edi + 2]
jmp dword [ecx*4 + 0x85802c]
mov eax, dword [esp + 8]
mov dword [esp + 0x60], eax
mov eax, dword [ebp*4 + 0x89d01c]
add eax, 0xfffffffe
mov dword [esp + 8], eax
xor ebp, ebp
mov dword [esp + 0xc], edi
jmp case.0x853586.25
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
mov ebp, 1
cmp ecx, 0x5c
jne case.0x853586.25
movzx ecx, word [eax + 4]
mov ebp, 1
cmp ecx, 0x45
jne case.0x853586.25
add eax, 4
jmp 0x85345f
movzx ecx, cx
cmp ecx, 0x3a
mov edx, dword [esp + 0xc]
jne 0x852b86
mov ecx, dword [esi + 8]
mov dword [esp + 0xac], ecx
mov dword [esp + 8], edi
movzx ecx, word [edi]
mov edx, edi
xor esi, esi
cmp ecx, 0x5e
jne 0x853650
add eax, 6
mov dword [esp + 8], eax
mov esi, 1
mov edx, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0xb0], esi
lea eax, [ebp + 2]
mov dword [esp + 0x8c], eax
mov eax, ebp
mov dword [esp + 0x2c], edx
sub eax, edx
sar eax, 1
mov esi, str.alpha
xor ebx, ebx
mov dword [esp + 0xa0], eax
movzx edi, byte [ebx + 0x89d213]
cmp eax, edi
jne 0x8536a4
sub esp, 4
push eax
push esi
push dword [esp + 0x38]
call fcn.00869320
add esp, 0x10
test eax, eax
mov eax, dword [esp + 0xa0]
je 0x852d49
lea esi, [esi + edi + 1]
inc ebx
cmp ebx, 0xe
jne 0x853679
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1e
mov ecx, 6
mov esi, dword [esp + 0x190]
mov edx, dword [esp + 0xc]
jmp 0x852b98
mov ebx, 0x5b
jmp case.0x853586.5
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 8]
movzx eax, word [ecx + 2]
cmp eax, 0x5c
jne 0x85371d
mov edx, ecx
add edx, 4
mov esi, edx
movzx eax, word [esi]
cmp eax, 0x45
jne 0x853737
mov dword [esp + 8], esi
movzx eax, word [esi + 2]
lea edx, [esi + 4]
mov dword [esp + 0x2c], 0
cmp eax, 0x5c
mov ecx, esi
je 0x8536f0
add edx, 0xfffffffc
xor ebp, ebp
mov ecx, esi
jmp 0x853744
mov ebp, dword [esp + 0x2c]
mov edx, ecx
cmp ebx, 0xd
je 0x853750
cmp ebx, 0xa
je 0x853750
test ebp, ebp
jne 0x853801
jmp 0x853763
add esi, 0xfffffffc
mov ax, 0x5c
mov ebp, dword [esp + 0x2c]
mov edx, esi
mov esi, dword [esp + 0x190]
cmp ebx, 0xd
jne 0x853728
mov edi, dword [esp + 0xc4]
or byte [edi + 1], 8
test ebp, ebp
jne 0x853801
movzx eax, ax
xor ebp, ebp
cmp eax, 0x2d
jne 0x853801
lea eax, [edx + 4]
mov dword [esp + 8], eax
movzx ebp, word [edx + 4]
cmp ebp, 0x5c
jne 0x8537c8
lea eax, [edx + 8]
add edx, 0xc
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [eax - 2]
cmp esi, 0x45
jne 0x852b38
mov dword [esp + 8], eax
movzx ebp, word [eax]
add eax, 4
add edx, 4
cmp ebp, 0x5c
je 0x853790
add eax, 0xfffffffc
mov dword [esp + 0x2c], 0
mov esi, dword [esp + 0x190]
test bp, bp
jne 0x8537d5
jmp 0x8537f9
mov dword [esp + 0x2c], 0
test bp, bp
je 0x8537f9
mov edi, dword [esp + 0x2c]
test edi, edi
setne dl
movzx esi, bp
cmp esi, 0x5d
jne 0x852b7d
test edi, edi
mov esi, dword [esp + 0x190]
jne 0x852be3
mov dword [esp + 8], ecx
mov ebp, dword [esp + 0x2c]
xor eax, eax
mov ecx, dword [esp + 0xc]
cmp ecx, 2
setl al
add ecx, eax
mov dword [esp + 0xc], ecx
cmp ecx, 1
jne 0x853831
mov eax, ebp
or eax, dword [esp + 0x3c]
jne 0x853831
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
cmp ecx, 0x5d
je 0x8540df
lea ecx, [esp + 0x64]
lea edx, [esp + 0x48]
push ebx
push ebx
push esi
push dword [esp + 0x34]
call fcn.008594c0
add esp, 0x10
add dword [esp + 0x20], eax
mov eax, dword [esp + 8]
lea ecx, [eax + 2]
mov dword [esp + 8], ecx
movzx ebx, word [eax + 2]
test ebx, ebx
je 0x85386d
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
jmp 0x853896
mov ecx, dword [esp + 0x60]
test ecx, ecx
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
je 0x853ebf
lea eax, [ecx + 2]
mov dword [esp + 8], eax
movzx ebx, word [ecx + 2]
xor ecx, ecx
test ebx, ebx
je 0x853ec1
test ebp, ebp
mov eax, edx
mov dword [esp + 0x2c], ebp
jne 0x8533b0
cmp ebx, 0x5d
mov eax, edx
mov dword [esp + 0x2c], ebp
jne 0x8533b0
mov dword [esp + 0x2c], 0
mov ebp, dword [esp + 0xa4]
jmp 0x853ed4
add eax, 4
movzx ecx, word [eax + 2]
add eax, 2
test cx, cx
sete dl
cmp ecx, 0x29
setne dh
xor dh, dl
jne 0x8538ca
test cx, cx
mov dword [esp + 8], eax
mov ebp, dword [esp + 4]
jne 0x8544f8
jmp 0x85765b
mov eax, dword [esp + 0x28]
shr eax, 1
and eax, 1
add eax, 0x19
mov ebp, dword [esp + 4]
mov word [ebp], ax
jmp 0x853b7c
mov ecx, dword [esp + 8]
lea eax, [ecx + 2]
mov dword [esp + 8], eax
movzx eax, word [ecx + 2]
cmp eax, 0x2a
jne 0x854178
movzx eax, word [ecx + 4]
cmp eax, 0x3a
je 0x85431d
movzx edx, ax
cmp edx, 0xff
ja 0x85394d
mov edx, dword [esi + 0xc]
test byte [edx + eax], 2
jne 0x85431d
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
sar eax, 1
mov dword [esp + 0x38], eax
jmp 0x854245
mov ebp, 0xffffffff
jmp 0x8539d2
mov ebp, 0xffffffff
mov eax, 1
jmp 0x8539d4
mov eax, dword [esp + 0x1c]
cmp eax, 0xfffffffe
mov edx, 0xffffffff
je 0x853981
mov edx, eax
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
sar eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
shr eax, 2
and eax, 1
or eax, 0xc
mov ecx, dword [esp + 4]
mov word [ecx], ax
mov edi, ecx
lea eax, [ecx + 2]
mov ebp, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], edx
jmp 0x8544f8
mov ebp, 1
xor eax, eax
mov ebx, dword [esp + 0x28]
test edi, edi
je 0x857637
mov dword [esp + 0xc], eax
test eax, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
je 0x853a10
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x1c], eax
cmp ebp, dword [esp + 0xc]
setne byte [esp + 0xa4]
test bl, 8
mov dword [esp + 0x98], edi
mov ecx, dword [esp + 8]
mov dword [esp + 0x20], ebp
je 0x853a58
movzx eax, word [ecx + 2]
add ecx, 2
cmp eax, 0xff
ja 0x853eb3
mov ebp, ecx
mov ebx, dword [esp + 0x194]
jmp 0x854bb9
mov ebx, dword [esp + 0x194]
jmp 0x854cc1
lea ecx, [esp + 8]
lea edx, [esp + 0xe0]
push 0
push dword [esp + 0x2c]
push dword [esi + 0x40]
mov eax, dword [esp + 0x180]
mov esi, eax
push esi
call fcn.00858430
add esp, 0x10
cmp dword [esi], 0
mov esi, dword [esp + 0x190]
jne 0x8575bb
test eax, eax
je 0x854272
mov dword [esp + 0x10], eax
lea eax, [eax - 6]
cmp eax, 0x11
mov edx, 0xffffffff
mov ecx, dword [esp + 0x1c]
jb 0x853ab9
mov edx, ecx
cmp ecx, 0xfffffffe
je 0x853ac0
mov edx, ecx
mov ebp, dword [esp + 0x10]
cmp ebp, 0x1c
mov dword [esp + 0x30], edx
je 0x8546a5
cmp ebp, 0x1b
mov ebx, dword [esp + 0x194]
jne 0x85471d
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 8]
lea eax, [ecx + 2]
mov dword [esp + 8], eax
movzx edx, word [ecx + 2]
cmp edx, 0x3c
mov ebp, 0x3e
je 0x853b09
mov ebp, 0x27
movzx edx, word [ecx + 4]
cmp edx, 0x2b
je 0x853b29
movzx esi, dx
cmp esi, 0x2d
je 0x853b29
add edx, 0xffffffd0
movzx edx, dx
cmp edx, 9
ja 0x855fbf
lea edx, [ecx + 4]
add ecx, 6
movzx esi, word [ecx]
lea ebx, [esi - 0x30]
movzx ebx, bx
add ecx, 2
cmp ebx, 0xa
jb 0x853b2f
cmp ebp, esi
jne 0x854a88
mov dword [esp + 8], edx
mov ecx, 0xa3
mov eax, edx
jmp 0x854a9a
mov cx, 0x5d
test byte [esi + 0x63], 2
je 0x853bdf
jmp 0x857698
test byte [esp + 0x28], 2
jne 0x854216
mov ebp, dword [esp + 4]
mov word [ebp], 0x1b
add ebp, 2
xor edi, edi
jmp 0x8544f8
mov cx, 0x7b
test al, al
je 0x853bdf
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
mov edx, ecx
add edx, 0xffffffd0
movzx edx, dx
cmp edx, 9
ja 0x8544ff
add eax, 4
xor ebx, ebx
movzx ecx, cx
lea edx, [ebx + ebx*4]
lea ecx, [ecx + edx*2 - 0x30]
mov ebx, ecx
cmp ecx, 0xffff
jg 0x857623
movzx ecx, word [eax]
mov edx, ecx
add edx, 0xffffffd0
movzx edx, dx
add eax, 2
cmp edx, 9
jbe 0x853bac
add eax, 0xfffffffe
jmp 0x854504
mov word [esp + 0x120], cx
mov eax, 1
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esi + 0x20]
sub ecx, dword [esi + 0x10]
sar ecx, 1
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x28]
and ecx, 1
sete dl
or dl, byte [esp + 0x5b]
jne 0x853cc4
movzx edx, word [esp + 0x120]
mov esi, edx
and esi, 0xfc00
cmp esi, 0xd800
jne 0x853c46
shl edx, 0xa
and edx, 0xffc00
movzx esi, word [esp + 0x122]
and esi, 0x3ff
lea edx, [edx + esi + 0x10000]
mov esi, edx
sar esi, 0x1f
shr esi, 0x19
add esi, edx
mov edi, esi
and edi, 0x7fffff80
sar esi, 7
movzx esi, byte [esi + 0x8a0804]
shl esi, 7
sub edx, edi
add edx, esi
movzx edx, word [edx + edx + 0x8a2a04]
movzx edx, byte [edx*8 + 0x89f187]
test dx, dx
mov esi, dword [esp + 0x190]
je 0x853cc4
mov eax, dword [esp + 4]
mov dword [eax], 0x90010
mov word [eax + 4], dx
mov edx, dword [esp + 0x1c]
cmp edx, 0xfffffffe
mov ecx, 0xffffffff
mov eax, 0xffffffff
je 0x853cac
mov ecx, dword [esp + 0x30]
mov eax, edx
mov edx, dword [esp + 4]
mov edi, edx
lea edx, [edx + 6]
mov dword [esp + 0x2c], ebp
mov ebp, edx
mov dword [esp + 0x30], ecx
jmp 0x8544f4
add ecx, 0x1d
mov edx, dword [esp + 4]
mov word [edx], cx
lea ecx, [edx + 2]
test eax, eax
mov dword [esp + 0x2c], ebp
je 0x853d10
mov edx, eax
lea esi, [esp + 0x120]
mov ebx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [esi]
mov word [ebx], di
add ebx, 2
add esi, 2
dec edx
jne 0x853cf0
mov edx, dword [esp + 4]
lea edx, [edx + eax*2]
lea ecx, [ecx + eax*2]
mov esi, dword [esp + 0x190]
movzx ebp, word [esp + 0x120]
cmp ebp, 0xd
je 0x853d2c
movzx esi, bp
cmp esi, 0xa
mov esi, dword [esp + 0x190]
jne 0x853d37
mov edi, dword [esp + 0xc4]
or byte [edi + 1], 8
cmp eax, 1
sete bh
cmp dword [esp + 0xb4], 0
sete bl
or bl, bh
cmp dword [esp + 0x1c], 0xfffffffe
jne 0x853da3
mov dword [esp + 0x30], 0xffffffff
test bl, bl
je 0x853dee
mov dword [esp + 0x30], 0xffffffff
cmp eax, 1
mov ebx, dword [esp + 0x194]
jne 0x853e52
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], ebp
mov ebp, ecx
jmp 0x8544f8
test bl, bl
je 0x853e20
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
movzx eax, word [edx]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x68]
or edx, dword [esp + 0xb4]
mov edi, dword [esp + 4]
mov ebp, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
mov edi, dword [esp + 4]
mov ebp, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0x1c], 0xffffffff
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
mov edi, dword [esp + 4]
mov ebp, ecx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
movzx eax, word [edx]
mov edi, dword [esp + 4]
mov edx, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esi + 0x68]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x40], ebp
mov ebp, edx
mov dword [esp + 0x30], 0xffffffff
mov eax, dword [esp + 0xb4]
jmp 0x8544f4
mov dword [esp + 0x20], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x34], 0
xor edx, edx
test ebx, ebx
jne 0x853ed4
jmp 0x857649
mov ebx, dword [esp + 0x194]
jmp 0x854cb6
xor ecx, ecx
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0xa4]
test ebx, ebx
je 0x857649
mov ebx, edx
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
cmp ecx, 0xfffffffe
mov edx, 0xffffffff
je 0x853eee
mov edx, ecx
test ebx, ebx
mov ebx, dword [esp + 0x194]
mov dword [esp + 0x30], edx
jne 0x853f01
cmp eax, edi
jbe 0x853f2e
mov ecx, dword [esp + 0x28]
and ecx, 0x20000000
cmp dword [esp + 0x34], 0
je 0x85406f
mov dword [esp + 0x14], edi
mov edi, edx
mov edx, dword [esp + 0x3c]
or edx, ecx
mov edx, edi
mov edi, dword [esp + 0x14]
jne 0x85406f
test ebx, ebx
je 0x853f77
sub eax, edi
sar eax, 1
add dword [ebx], eax
xor eax, eax
cmp ebp, dword [esp + 0x34]
sete al
mov ecx, 0x6f
sub ecx, eax
mov eax, dword [esp + 4]
mov word [eax], cx
mov edi, eax
lea eax, [eax + 0x22]
mov ebp, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], edx
jmp 0x8544f8
xor eax, eax
cmp ebp, dword [esp + 0x34]
sete al
mov ecx, 0x6f
sub ecx, eax
mov edx, dword [esp + 4]
lea eax, [edx + 2]
mov word [edx], cx
test ebp, ebp
je 0x854025
not byte [esp + 0x64]
not byte [esp + 0x65]
not byte [esp + 0x66]
not byte [esp + 0x67]
not byte [esp + 0x68]
not byte [esp + 0x69]
not byte [esp + 0x6a]
not byte [esp + 0x6b]
not byte [esp + 0x6c]
not byte [esp + 0x6d]
not byte [esp + 0x6e]
not byte [esp + 0x6f]
not byte [esp + 0x70]
not byte [esp + 0x71]
not byte [esp + 0x72]
not byte [esp + 0x73]
not byte [esp + 0x74]
not byte [esp + 0x75]
not byte [esp + 0x76]
not byte [esp + 0x77]
not byte [esp + 0x78]
not byte [esp + 0x79]
not byte [esp + 0x7a]
not byte [esp + 0x7b]
not byte [esp + 0x7c]
not byte [esp + 0x7d]
not byte [esp + 0x7e]
not byte [esp + 0x7f]
not byte [esp + 0x80]
not byte [esp + 0x81]
not byte [esp + 0x82]
not byte [esp + 0x83]
mov ecx, dword [esp + 0x80]
mov dword [eax + 0x1c], ecx
mov ecx, dword [esp + 0x7c]
mov dword [eax + 0x18], ecx
mov ecx, dword [esp + 0x78]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 0x74]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x70]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov eax, dword [esp + 4]
mov edi, eax
lea eax, [eax + 0x22]
mov ebp, eax
jmp 0x8544d8
test ecx, ecx
jne 0x854395
test ebp, ebp
jne 0x854395
cmp dword [esp + 0x34], 0
je 0x854395
lea ecx, [eax + 2]
cmp dword [esp + 0x88], 0
mov dword [esp + 0x48], ecx
mov word [eax], 2
je 0x854380
sub esp, 8
push ecx
push pe_nt_image_headers32
call fcn.008691e0
add esp, 0x10
add eax, eax
add eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
sub esp, 8
push eax
push 0x10ffff
call fcn.008691e0
add esp, 0x10
add eax, eax
add eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
jmp 0x854395
add eax, 2
mov dword [esp + 8], eax
cmp dword [esp + 0xa4], 0
je 0x85434d
mov eax, dword [esp + 0x1c]
cmp eax, 0xfffffffe
mov edx, 0xffffffff
je 0x854104
mov edx, eax
mov edi, dword [esp + 0x90]
test edi, edi
sete al
or al, byte [esp + 0x5b]
mov dword [esp + 0x30], edx
jne 0x8542ab
mov eax, ebx
sar eax, 0x1f
shr eax, 0x19
add eax, ebx
mov ecx, eax
and ecx, 0x7fffff80
sar eax, 7
movzx eax, byte [eax + 0x8a0804]
shl eax, 7
mov edx, ebx
sub edx, ecx
add edx, eax
movzx eax, word [edx + edx + 0x8a2a04]
mov edx, dword [esp + 0x30]
movzx eax, byte [eax*8 + 0x89f187]
test ax, ax
je 0x8542ab
mov ecx, dword [esp + 4]
mov dword [ecx], 0x9000f
mov word [ecx + 4], ax
mov edi, ecx
lea eax, [ecx + 6]
jmp 0x8548a8
mov edx, dword [esi + 0x20]
sub edx, dword [esi + 0x10]
sar edx, 1
mov dword [esp + 0x38], edx
movzx eax, ax
cmp eax, 0x3f
jne 0x854245
lea eax, [ecx + 4]
mov dword [esp + 8], eax
movzx ebp, word [ecx + 4]
lea edx, [ebp - 0x21]
movzx edx, dx
cmp edx, 0x5b
ja case.0x8541ca.1
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], 0x29
mov dword [esp + 0x20], 0x27
mov dword [esp + 0x10], 0
jmp dword [edx*4 + 0x857b04]
lea eax, [ecx + 6]
mov dword [esp + 8], eax
movzx eax, word [ecx + 6]
cmp eax, 0x29
jne 0x854202
movzx eax, word [ecx + 8]
lea edx, [eax - 0x2a]
movzx edx, dx
cmp edx, 0x15
ja 0x856f9d
mov esi, 0x200003
bt esi, edx
jae 0x856f9d
mov esi, dword [esp + 0x190]
inc dword [esi + 0x5c]
mov ebx, 0x7e
jmp 0x856d7d
mov edi, dword [esp + 0x1c]
cmp edi, 0xfffffffe
mov ecx, 0xffffffff
mov eax, 0xffffffff
mov edx, dword [esp + 0x30]
je 0x854231
mov ecx, edx
mov eax, edi
mov ebp, dword [esp + 4]
mov word [ebp], 0x1c
add ebp, 2
xor edi, edi
jmp 0x853cbb
mov ecx, dword [esp + 0x28]
test ch, 0x10
jne 0x854517
mov eax, dword [esi + 0x40]
inc eax
mov dword [esi + 0x40], eax
mov edx, dword [esp + 4]
mov word [edx + 4], ax
mov ebx, 0x85
xor ebp, ebp
mov edi, 1
jmp 0x854520
cmp dword [esp + 0x88], 0
mov eax, dword [esp + 0xe0]
je 0x85487e
cmp eax, 0xffff
jbe 0x85487e
sub esp, 8
lea ecx, [esp + 0x128]
push ecx
push eax
call fcn.008691e0
add esp, 0x10
jmp 0x85488b
add edi, 0x1f
cmp dword [esp + 0x88], 0
mov eax, dword [esp + 4]
mov word [eax], di
je 0x85489b
cmp ebx, 0x10000
jb 0x85489b
mov edi, dword [esp + 4]
lea esi, [edi + 2]
sub esp, 8
push esi
push ebx
mov ebx, edx
call fcn.008691e0
add esp, 0x10
lea eax, [esi + eax*2]
mov esi, dword [esp + 0x190]
mov dword [esp + 0x2c], ebp
mov ebp, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
lea ebp, [ecx + 4]
mov dword [esp + 8], ebp
mov edx, dword [esi + 0xc]
add ecx, 6
movzx esi, ax
test byte [edx + esi], 2
je 0x8548d6
mov dword [esp + 8], ecx
movzx eax, word [ecx]
add ecx, 2
cmp eax, 0x100
jb 0x85432a
jmp case.0x85492f.2
cmp dword [esp + 0x88], 0
je 0x854978
cmp ebx, 0x10000
jb 0x854978
sub esp, 8
lea eax, [esp + 0x128]
push eax
push ebx
call fcn.008691e0
add esp, 0x10
jmp 0x854985
mov word [eax + 2], pe_nt_image_headers32
lea ecx, [eax + 6]
mov dword [esp + 0x48], ecx
mov word [eax + 4], 0xffff
mov eax, ecx
xor edx, edx
test ebp, ebp
setne dl
lea ecx, [eax + 2]
mov dword [esp + 0x48], ecx
mov word [eax], 0
mov eax, dword [esp + 4]
mov word [eax], 0x70
cmp dword [esp + 0x3c], 0
je 0x8543bb
or edx, 4
mov edi, dword [esp + 4]
mov word [edi + 4], dx
cmp dword [esp + 0x20], 0
jle 0x8544c8
lea eax, [edi + 6]
or edx, 2
mov word [edi + 4], dx
sub ecx, eax
je 0x8543e8
movzx edx, byte [edi + ecx + 5]
mov byte [edi + ecx + 0x25], dl
dec ecx
jne 0x8543dc
test ebp, ebp
je 0x854487
cmp dword [esp + 0x3c], 0
jne 0x854487
not byte [esp + 0x64]
not byte [esp + 0x65]
not byte [esp + 0x66]
not byte [esp + 0x67]
not byte [esp + 0x68]
not byte [esp + 0x69]
not byte [esp + 0x6a]
not byte [esp + 0x6b]
not byte [esp + 0x6c]
not byte [esp + 0x6d]
not byte [esp + 0x6e]
not byte [esp + 0x6f]
not byte [esp + 0x70]
not byte [esp + 0x71]
not byte [esp + 0x72]
not byte [esp + 0x73]
not byte [esp + 0x74]
not byte [esp + 0x75]
not byte [esp + 0x76]
not byte [esp + 0x77]
not byte [esp + 0x78]
not byte [esp + 0x79]
not byte [esp + 0x7a]
not byte [esp + 0x7b]
not byte [esp + 0x7c]
not byte [esp + 0x7d]
not byte [esp + 0x7e]
not byte [esp + 0x7f]
not byte [esp + 0x80]
not byte [esp + 0x81]
not byte [esp + 0x82]
not byte [esp + 0x83]
mov ecx, dword [esp + 0x80]
mov dword [eax + 0x1c], ecx
mov ecx, dword [esp + 0x7c]
mov dword [eax + 0x18], ecx
mov ecx, dword [esp + 0x78]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 0x74]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x70]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov ecx, dword [esp + 0x48]
add ecx, 0x20
mov eax, ecx
mov edi, dword [esp + 4]
sub eax, edi
shr eax, 1
mov word [edi + 2], ax
mov ebp, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
mov edx, ebp
jmp 0x852250
add eax, 2
xor ebx, ebx
movzx ecx, cx
cmp ecx, 0x7d
jne 0x8547fc
mov ebp, ebx
jmp 0x85485f
mov ebx, 0x83
xor edi, edi
xor ebp, ebp
mov eax, dword [esi + 0x58]
lea edx, [eax + 1]
mov dword [esi + 0x58], edx
cmp eax, 0xfa
jge 0x8576bc
mov dword [esp + 0xc], edi
cmp ebx, 0x80
mov dword [esp + 0x10], ebp
ja 0x85455f
cmp dword [esi + 0x80], 0
je 0x85455f
mov dword [esi + 0x80], 0
xor edi, edi
mov eax, dword [esp + 4]
jmp 0x854571
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
sar eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 4]
mov edi, eax
mov word [eax], bx
mov dword [esp + 0x98], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x68]
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc0], 0
lea eax, [ebx - 0x7f]
xor edx, edx
cmp eax, 2
setb dl
mov dword [esp + 0x14], edx
xor eax, eax
cmp ebx, 0x87
sete al
add eax, dword [esp + 0x18c]
sub esp, 0xc
mov ebp, ebx
lea edx, [esp + 0xa4]
push dword [esp + 0x144]
push esi
push dword [esp + 0x19c]
lea ebx, [esp + 0xec]
push ebx
lea ebx, [esp + 0x104]
push ebx
lea ebx, [esp + 0x104]
push ebx
lea ebx, [esp + 0x120]
push ebx
push eax
push dword [esp + 0x38]
push dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x1ac]
lea eax, [esp + 0x44]
push eax
call fcn.008508e0
add esp, 0x40
test eax, eax
je 0x8575bb
dec dword [esi + 0x58]
cmp ebp, 0x81
mov ecx, ebp
jne 0x854638
mov eax, dword [esp + 0x20]
cmp dword [esi + 0x40], eax
ja 0x854638
mov eax, dword [esp + 4]
mov word [eax], 0x82
cmp ecx, 0x80
mov ebx, dword [esp + 0x194]
ja 0x85464a
dec dword [esi + 0x5c]
test ebx, ebx
jne 0x8549d5
cmp ecx, 0x87
jne 0x8549d5
mov eax, 0xffffffff
mov ecx, dword [esp + 4]
movzx edx, word [ecx + 2]
movzx esi, word [ecx + edx*2]
lea ecx, [ecx + edx*2]
inc eax
cmp esi, 0x78
jne 0x854667
mov ecx, dword [esp + 4]
movzx ecx, word [ecx + 4]
cmp ecx, 0x91
jne 0x8549a1
mov ecx, 0x91
test eax, eax
mov esi, dword [esp + 0x190]
jle 0x8549d5
jmp 0x857782
mov eax, dword [esp + 8]
movzx ecx, word [eax + 2]
cmp ecx, 0x27
mov ebx, dword [esp + 0x194]
je 0x8546ca
movzx edx, cx
cmp edx, 0x3c
je 0x8546ca
cmp edx, 0x7b
jne 0x857716
add eax, 2
mov dword [esp + 8], eax
movzx edx, cx
cmp edx, 0x27
mov ecx, edx
je 0x8546e0
mov ecx, 0x7d
cmp edx, 0x3c
mov edx, 0x3e
je 0x8546ec
mov edx, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
jmp case.0x8541ca.5
test ebp, ebp
js 0x8558f7
lea ecx, [ebp - 0xf]
cmp ecx, 1
ja 0x855b24
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
sub esp, 4
lea ecx, [esp + 0xc]
lea edx, [esp + 0x104]
push dword [esp + 0x178]
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0xdc]
push eax
call fcn.00858f10
add esp, 0x10
test eax, eax
je 0x856191
xor eax, eax
cmp dword [esp + 0x10], 0x10
sete al
mov ecx, dword [esi + 0x20]
sub ecx, dword [esi + 0x10]
sar ecx, 1
mov dword [esp + 0x38], ecx
xor ecx, ecx
cmp dword [esp + 0x100], eax
sete cl
mov eax, 0x10
sub eax, ecx
mov ecx, dword [esp + 4]
mov word [ecx], ax
movzx eax, word [esp + 0xd0]
mov word [ecx + 2], ax
movzx eax, word [esp + 0xcc]
mov word [ecx + 4], ax
mov edi, ecx
lea eax, [ecx + 6]
xor ecx, ecx
mov dword [esp + 4], eax
test ecx, ecx
je 0x85619e
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
jmp 0x855b0a
lea edx, [eax + 2]
movzx ecx, word [eax + 2]
mov ebp, 0xffffffff
cmp ecx, 0x7d
je 0x85485d
lea esi, [ecx - 0x30]
movzx esi, si
xor ebp, ebp
cmp esi, 9
ja 0x85484e
add eax, 4
xor ebp, ebp
lea edx, [ebp + ebp*4]
movzx ecx, cx
lea ebp, [ecx + edx*2 - 0x30]
cmp ebp, 0xffff
jg 0x857623
movzx ecx, word [eax]
mov edx, ecx
add edx, 0xffffffd0
movzx edx, dx
add eax, 2
cmp edx, 9
jbe 0x85481f
add eax, 0xfffffffe
mov edx, eax
cmp ebp, ebx
mov esi, dword [esp + 0x190]
jl 0x857812
mov eax, edx
mov ecx, dword [esp + 0x174]
cmp dword [ecx], 0
mov dword [esp + 8], eax
mov eax, ebx
mov ebx, dword [esp + 0x28]
je 0x8539d8
jmp 0x8575bb
mov word [esp + 0x120], ax
mov eax, 1
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x194]
jmp 0x853bf0
mov eax, dword [esp + 4]
mov word [eax + 2], bx
mov edi, eax
lea eax, [eax + 4]
mov dword [esp + 0x2c], ebp
mov ebp, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
xor ebx, ebx
cmp esi, 0x3a
mov edi, 0
jne 0x85490f
mov ebx, ecx
jmp 0x8548e9
add ebx, 2
mov ax, word [ebx]
test ax, ax
je 0x8548f9
movzx edx, ax
cmp edx, 0x29
jne 0x8548e6
mov dword [esp + 8], ebx
sub ebx, ecx
sar ebx, 1
cmp ebx, 0x10000
mov edi, ecx
jae 0x857800
movzx eax, ax
cmp eax, 0x29
jne case.0x85492f.2
add ecx, 0xfffffffe
sub ecx, ebp
sar ecx, 1
cmp ecx, 6
mov esi, dword [esp + 4]
ja case.0x85492f.2
jmp dword [ecx*4 + 0x857e54]
sub esp, 4
push 0
push 0x89d11f
push ebp
call fcn.00869320
add esp, 0x10
xor ecx, ecx
test eax, eax
je 0x856c4b
jmp case.0x85492f.2
mov eax, dword [esp + 4]
mov edi, eax
mov dword [esp + 0x2c], ebp
mov edx, eax
mov ebx, dword [esp + 0x194]
test ecx, ecx
jne 0x855b16
jmp 0x852250
mov word [esp + 0x120], bx
mov eax, 1
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], ecx
mov ebx, dword [esp + 0x194]
jmp 0x853bf0
cmp eax, 2
mov esi, dword [esp + 0x190]
jge 0x857794
mov ecx, 0x87
test eax, eax
jne 0x8549d5
mov dword [esp + 0xd4], 0xffffffff
mov dword [esp + 0xe4], 0xffffffff
mov ecx, 0x87
mov eax, dword [esp + 8]
movzx eax, word [eax]
cmp eax, 0x29
jne 0x8576ce
test ebx, ebx
je 0x854a21
mov eax, dword [ebx]
mov edx, 0x7fffffeb
sub edx, eax
mov ecx, dword [esp + 0xc0]
add ecx, 0xfffffffc
cmp edx, ecx
jl 0x8575ae
add ecx, eax
mov dword [ebx], ecx
mov ebp, dword [esp + 4]
mov dword [ebp + 2], 0x780002
mov word [ebp + 6], 2
add ebp, 8
jmp 0x8544f8
mov ebp, dword [esp + 0x98]
cmp ecx, 0x91
je 0x8544f8
cmp ecx, 0x81
jl 0x855d03
cmp dword [esp + 0x1c], 0xfffffffe
mov eax, dword [esp + 0xe4]
jne 0x85622c
cmp eax, 0xfffffffe
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x1c], eax
jg 0x854a6b
mov dword [esp + 0x1c], 0xffffffff
mov ecx, eax
shr ecx, 0x1f
mov dword [esp + 0xa8], ecx
test eax, eax
jns 0x85686e
mov eax, dword [esp + 0x40]
jmp 0x856875
mov ecx, dword [esp + 0x174]
mov dword [ecx], 0x39
mov ecx, 6
mov ebx, dword [esp + 0x194]
cmp cl, 0x86
mov esi, dword [esp + 0x190]
mov edx, dword [esp + 0x30]
je 0x855942
sar dword [esp + 0x38], 1
cmp cl, 0xa3
jne 0x855aec
mov dword [esp + 0x14], ebp
mov bp, word [eax]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x1c], edx
movzx ecx, bp
cmp ecx, 0x2b
jne 0x854b0c
lea edx, [eax + 2]
mov dword [esp + 8], edx
movzx ebp, word [eax + 2]
mov eax, ebp
add eax, 0xffffffd0
movzx eax, ax
cmp eax, 0xa
mov eax, edx
jb 0x854b2b
jmp 0x8577b8
cmp ecx, 0x2d
jne 0x854b2b
movzx ebp, word [eax + 2]
lea edx, [ebp - 0x30]
movzx edx, dx
cmp edx, 9
ja case.0x8541ca.1
add eax, 2
mov dword [esp + 8], eax
lea edx, [ebp - 0x30]
movzx edx, dx
cmp edx, 9
ja 0x8558be
add eax, 2
xor edx, edx
cmp edx, 0xccccccc
jge 0x85766d
lea edx, [edx + edx*4]
mov dword [esp + 8], eax
movzx esi, bp
lea edi, [esi + edx*2 - 0x30]
mov esi, dword [esp + 0x190]
movzx ebp, word [eax]
mov edx, ebp
add edx, 0xffffffd0
movzx edx, dx
add eax, 2
cmp edx, 0xa
mov edx, edi
jb 0x854b3f
jmp 0x8558c0
mov eax, dword [esp + 0xbc]
mov eax, dword [eax]
mov dword [esp + 0x34], eax
jmp 0x854b99
xor eax, eax
mov edx, dword [esp + 0x3c]
jmp 0x854bb9
mov dword [esp + 0x34], 1
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
cmp eax, 0x100
mov ebp, ecx
mov edx, dword [esp + 0x3c]
jae 0x854cb6
mov ecx, dword [esi + 0xc]
add ebp, 2
movzx eax, ax
test byte [ecx + eax], 1
je 0x854bdb
movzx eax, word [ebp]
add ebp, 2
cmp eax, 0x100
jb 0x854bbf
jmp 0x854cb1
cmp eax, 0x23
jne 0x854cb1
movzx ecx, word [ebp]
xor eax, eax
test cx, cx
je 0x854bb9
mov dword [esp + 0x3c], edx
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x84]
test eax, eax
mov dword [esp + 0x10], ebp
je 0x854c30
cmp ebp, edx
jae 0x854c74
sub esp, 0xc
push dword [esp + 0xa0]
push dword [esp + 0xcc]
push edx
push eax
push dword [esp + 0x2c]
call fcn.00869060
add esp, 0x20
test eax, eax
je 0x854c74
jmp 0x854b7a
mov eax, dword [esp + 0xbc]
mov eax, dword [eax]
mov dword [esp + 0x34], eax
lea esi, [eax + eax]
sub edx, esi
mov esi, dword [esp + 0x190]
mov eax, ebp
cmp eax, edx
ja 0x854c74
cmp cx, word [esi + 0x8c]
jne 0x854c74
cmp dword [esp + 0x34], 1
je 0x854b91
movzx ecx, word [ebp + 2]
cmp cx, word [esi + 0x8e]
je 0x854b99
mov ecx, dword [esp + 0x10]
lea eax, [ecx + 2]
cmp dword [esp + 0x88], 0
je 0x854c9e
mov edx, ecx
movzx ecx, word [edx + 2]
and ecx, 0xfc00
cmp ecx, 0xdc00
jne 0x854c9e
add edx, 4
mov eax, edx
mov ebp, eax
movzx ecx, word [eax]
test cx, cx
jne 0x854bf3
jmp 0x854b89
add ebp, 0xfffffffe
mov ecx, ebp
add ecx, 0xfffffffe
mov dword [esp + 8], ecx
mov ebp, dword [esp + 0x20]
movzx eax, word [ecx + 2]
cmp eax, 0x28
jne 0x854d39
movzx eax, word [ecx + 4]
mov dword [esp + 0x10], 0
cmp eax, 0x3f
mov eax, dword [esp + 0xd8]
jne 0x854d7b
movzx eax, word [ecx + 6]
mov dword [esp + 0x10], 0
cmp eax, 0x23
mov eax, dword [esp + 0xd8]
jne 0x854d7b
mov dword [esp + 0x3c], edx
add ecx, 6
movzx eax, word [ecx + 2]
add ecx, 2
test ax, ax
mov ebp, ecx
sete cl
cmp eax, 0x29
setne dl
xor dl, cl
mov ecx, ebp
jne 0x854d05
test ax, ax
mov dword [esp + 8], ecx
je 0x85765b
mov ax, word [ecx + 2]
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x20]
add ecx, 2
movzx eax, ax
cmp eax, 0x3f
je 0x854d68
mov dword [esp + 0x10], 0
cmp eax, 0x2b
mov eax, dword [esp + 0xd8]
jne 0x854d7b
mov dword [esp + 8], ecx
xor eax, eax
mov dword [esp + 0x10], 1
jmp 0x854d7b
mov dword [esp + 8], ecx
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x34], eax
movzx eax, word [edi]
cmp eax, 0x75
jne 0x854de4
add dword [esp + 4], 8
test ebx, ebx
mov eax, dword [edi]
mov dword [edi + 4], eax
mov dword [edi], 0x40081
mov dword [edi + 8], 0x40078
mov dword [esp + 0xc0], 6
jne 0x854e56
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
add ecx, 2
cmp eax, ecx
jb 0x854e56
mov ebp, edx
lea edx, [edi + 2]
movzx ecx, word [eax - 2]
sub edx, dword [esi + 0x14]
sar edx, 1
cmp edx, ecx
mov edx, ebp
mov ebp, dword [esp + 0x20]
jne 0x854e56
add ecx, 2
mov word [eax - 2], cx
mov ax, word [edi]
lea ecx, [eax - 0x1d]
movzx ecx, cx
cmp ecx, 3
ja 0x854f73
mov dword [esp + 0x3c], edx
lea ecx, [eax - 0x1e]
movzx edx, cx
xor ecx, ecx
cmp edx, 2
ja 0x854e0b
lea ecx, [edx + edx*2]
lea ecx, [edx + ecx*4 + 0xd]
mov edx, dword [esp + 4]
movzx ebp, word [edx - 2]
cmp dword [esp + 0x88], 0
je 0x855021
mov edx, ebp
and edx, 0xfc00
movzx edx, dx
cmp edx, 0xdc00
jne 0x855021
mov eax, dword [esp + 4]
mov eax, dword [eax - 4]
mov dword [esp + 0x150], eax
mov ax, word [edi]
mov dword [esp + 0x44], 0x10000002
jmp 0x855048
mov eax, dword [esp + 4]
sub eax, edi
mov dword [esp + 0xa0], eax
mov ecx, eax
sar ecx, 1
mov dword [esp + 0xb0], ecx
mov eax, dword [esp + 0xc]
test eax, eax
je 0x854f91
cmp eax, 2
jl 0x854ed8
test ebx, ebx
je 0x8555da
lea edx, [eax - 1]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x14c], edx
fild dword [esp + 0x14c]
mov dword [esp + 0x148], ecx
fimul dword [esp + 0x148]
fld qword [0x89ceb0]
fxch st(1)
fucompp
fnstsw ax
sahf
ja 0x8575ae
imul ecx, edx
mov eax, dword [ebx]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x8575ae
add eax, ecx
mov dword [ebx], eax
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x18], 0
test ebp, ebp
mov eax, dword [esp + 0xc]
jg 0x854efa
xor eax, eax
sub ebp, eax
xor eax, eax
test ebp, ebp
js 0x855474
test ebx, ebx
mov dword [esp + 0x3c], edx
je 0x85510b
test ebp, ebp
je 0x85510b
mov ecx, dword [esp + 0xc0]
add ecx, 5
mov dword [esp + 0x140], ebp
fild dword [esp + 0x140]
mov dword [esp + 0x144], ecx
fimul dword [esp + 0x144]
fld qword [0x89ceb0]
fxch st(1)
fucompp
fnstsw ax
sahf
ja 0x8575ae
imul ecx, ebp
add ecx, 0xfffffffc
mov eax, dword [ebx]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x8575ae
add eax, ecx
mov dword [ebx], eax
jmp 0x8553a1
mov ebp, edx
movzx edx, ax
mov ecx, 0x34
mov dword [esp + 0x44], edx
cmp edx, 0x16
ja 0x8550b3
mov edx, ebp
jmp 0x85504c
mov eax, ebp
mov dword [esp + 0x3c], edx
cmp eax, 1
mov eax, dword [esp + 4]
mov word [eax], 0
jg 0x855403
sub esp, 4
mov edx, 1
mov ecx, edi
push dword [esp + 0x3c]
push esi
push dword [esp + 0xa0]
call fcn.008580a0
add esp, 0x10
cmp dword [esp + 0xa0], 0
je 0x854fe4
mov eax, dword [esp + 0xa0]
movzx ecx, byte [edi + eax - 1]
mov byte [edi + eax + 1], cl
dec eax
jne 0x854fd8
add dword [esp + 4], 2
test ebp, ebp
mov edx, dword [esp + 0x3c]
je 0x85584a
mov eax, dword [esp + 0x34]
lea eax, [eax + 0x92]
mov word [edi], ax
mov eax, edi
lea edi, [edi + 2]
mov dword [esp + 0x18], 0
dec ebp
mov ecx, dword [esp + 0x38]
test ebp, ebp
jns 0x854f06
jmp 0x855474
mov dword [esp + 0x44], ebp
cmp dword [esp + 0xc], 2
jl 0x855048
movzx edx, ax
cmp edx, 0x1e
ja 0x855048
mov edx, dword [esi + 0x68]
or edx, dword [esp + 0xb4]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x44]
jmp 0x85504c
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x20]
add eax, 0xfffffff1
movzx eax, ax
mov dword [esp + 0x18], 0xffffffff
cmp eax, 1
mov eax, 0xffffffff
ja 0x855074
movzx eax, word [edi + 2]
mov dword [esp + 0x18], eax
movzx eax, word [edi + 4]
mov dword [esp + 0x24], eax
test ebp, ebp
mov eax, dword [esp + 0xc]
je 0x8550fe
add dword [esp + 0x34], ecx
cmp eax, 1
je 0x8554ab
test eax, eax
jne 0x8554c9
cmp ebp, 1
je 0x855893
cmp ebp, 0xffffffff
mov eax, dword [esp + 0x34]
jne 0x855dc8
add eax, 0x21
jmp 0x855dc0
lea ecx, [eax - 0x6e]
movzx ecx, cx
cmp ecx, 6
ja 0x855574
cmp dword [esp + 0x20], 0
mov edx, ebp
je 0x8550fe
mov eax, dword [esp + 0xc]
test eax, eax
mov edi, dword [esp + 0x20]
jne 0x855920
cmp edi, 0xffffffff
jne 0x855920
mov ecx, dword [esp + 0x34]
add ecx, 0x62
mov eax, dword [esp + 4]
mov word [eax], cx
add eax, 2
mov dword [esp + 4], eax
jmp 0x8555c5
mov dword [esp + 4], edi
mov ebp, dword [esp + 0x14]
jmp 0x855f75
test ebp, ebp
jle 0x8553a1
mov eax, dword [esp + 0x34]
add eax, 0x92
mov edx, dword [esi + 0x10]
mov dword [esp + 0x24], edx
mov edx, dword [esi + 0x20]
mov dword [esp + 0xc], edx
mov edx, ebp
mov esi, dword [esp + 4]
mov dword [esp + 0x34], eax
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0xc]
sub ecx, dword [esp + 0x24]
sar ecx, 1
mov dword [esp + 0x8c], ecx
dec edx
mov dword [esp + 0xac], edx
mov word [esi], ax
mov dword [esp + 0x20], ebp
je 0x85517a
lea eax, [esi + 4]
mov edx, esi
mov word [esi + 2], 0x83
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x855188
mov esi, ecx
mov ecx, eax
sub ecx, esi
shr ecx, 1
jmp 0x85518a
add esi, 2
mov edx, esi
mov esi, dword [esp + 0x190]
jmp 0x85519c
xor ecx, ecx
mov esi, dword [esp + 0x190]
mov word [edx + 4], cx
add edx, 6
mov dword [esp + 0x18], eax
sub esp, 4
push dword [esp + 0xa4]
push edi
mov dword [esp + 0x10], edx
push edx
call sub.msvcrt.dll_memcpy
add esp, 0x10
mov eax, dword [esi + 0x10]
mov ebp, dword [esi + 0x20]
mov ecx, dword [esi + 0x3c]
mov dword [esp + 0x24], eax
lea eax, [eax + ecx*2]
mov esi, dword [esp + 0x90]
mov edx, esi
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x44], edx
lea eax, [eax + edx*2 - 0xc8]
mov dword [esp + 0xc], ebp
cmp ebp, eax
mov ebp, dword [esp + 0x20]
jbe 0x8552c7
lea ebp, [ecx + ecx]
cmp ebp, 0x32001
jl 0x8551ff
mov ebp, 0x32000
cmp ecx, 0x31fff
mov eax, 0x48
mov esi, dword [esp + 0x190]
jg 0x857529
mov edx, ebp
sub edx, ecx
cmp edx, 0x64
jl 0x857529
lea eax, [ebp + ebp]
sub esp, 0xc
push eax
call dword [0x89cdb8]
add esp, 0x10
test eax, eax
je 0x85760a
mov dword [esp + 0xc], ebp
mov ecx, dword [esi + 0x3c]
add ecx, ecx
sub esp, 4
push ecx
push dword [esi + 0x10]
push eax
mov dword [esp + 0x34], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x34]
add esp, 0x10
mov eax, dword [esi + 0x10]
mov ebp, dword [esi + 0x20]
sub ebp, eax
add ebp, edx
mov dword [esi + 0x20], ebp
cmp dword [esi + 0x3c], 0x801
jl 0x855288
sub esp, 0xc
push eax
call dword [0x89cdbc]
mov edx, dword [esp + 0x34]
add esp, 0x10
mov ebp, dword [esi + 0x20]
mov dword [esi + 0x10], edx
mov eax, dword [esp + 0xc]
mov dword [esi + 0x3c], eax
mov eax, dword [esp + 0x174]
mov dword [eax], 0
mov ecx, dword [esi + 0x3c]
lea eax, [edx + ecx*2]
mov edx, dword [esp + 0x44]
lea eax, [eax + edx*2 - 0xc8]
cmp ebp, eax
ja 0x8551ef
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
cmp esi, eax
jge 0x855374
mov ebx, dword [esp + 0x24]
lea ecx, [ebx + eax*2]
xor eax, eax
cmp dword [esp + 0xac], 0
setne al
mov dword [esp + 0x44], eax
lea eax, [ebx + esi*2 + 2]
mov edx, ebx
cmp eax, ecx
mov esi, dword [esp + 4]
ja 0x8552fe
mov eax, ecx
mov dword [esp + 0x130], eax
mov ebp, dword [esp + 0x90]
mov ebx, edx
lea edx, [ebx + ebp*2]
neg ebx
add ebp, ebp
sub ebx, ebp
mov ebp, dword [esp + 0xb0]
mov eax, dword [esp + 0x44]
lea ebp, [ebp + eax*2 + 1]
mov eax, dword [esp + 0x130]
lea eax, [eax + ebx - 1]
shr eax, 1
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xc]
movzx ebx, word [edx]
add ebx, ebp
mov word [eax], bx
add eax, 2
add edx, 2
cmp edx, ecx
jb 0x85533b
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x44]
lea ecx, [ecx + eax*2 + 2]
mov eax, dword [esp + 0x190]
mov dword [esp + 0xc], ecx
mov dword [eax + 0x20], ecx
mov ebx, dword [esp + 0x194]
mov ebp, dword [esp + 0x20]
jmp 0x855378
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xb0]
lea esi, [esi + eax*2]
cmp ebp, 1
mov edx, dword [esp + 0xac]
mov ebp, edx
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x34]
jg 0x855134
jmp 0x8553a5
mov esi, dword [esp + 4]
mov dword [esp + 4], esi
cmp dword [esp + 0x18], 0
je 0x8555ba
mov esi, dword [esp + 0x190]
mov edx, dword [esp + 4]
mov ecx, edx
mov ebp, dword [esp + 0x18]
sub ecx, ebp
shr ecx, 1
inc ecx
movzx eax, word [ebp]
test eax, eax
mov word [edx], 0x78
mov edi, edx
mov word [edx + 2], cx
mov word [ebp], cx
je 0x8553ed
add eax, eax
sub ebp, eax
mov dword [esp + 0x18], ebp
mov eax, ebp
jmp 0x8553f1
mov dword [esp + 0x18], eax
mov edx, edi
add edx, 4
test eax, eax
jne 0x8553bf
mov dword [esp + 4], edx
jmp 0x8555c1
sub esp, 4
mov edx, 3
mov ecx, edi
push dword [esp + 0x3c]
push esi
push dword [esp + 0xa0]
call fcn.008580a0
add esp, 0x10
cmp dword [esp + 0xa0], 0
je 0x85543e
mov eax, dword [esp + 0xa0]
movzx ecx, byte [edi + eax - 1]
mov byte [edi + eax + 5], cl
dec eax
jne 0x855432
mov eax, dword [esp + 0x34]
lea eax, [eax + 0x92]
mov word [edi], ax
lea eax, [edi + 4]
mov dword [esp + 0x18], eax
mov dword [edi + 2], 0x83
lea edi, [edi + 6]
add dword [esp + 4], 6
xor eax, eax
dec ebp
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
test ebp, ebp
jns 0x854f06
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 4]
lea edi, [ecx - 4]
movzx eax, word [ecx - 2]
add eax, eax
mov dword [esp + 0x18], edi
sub edi, eax
mov dword [esp + 0x20], eax
neg eax
movzx ebp, word [ecx + eax - 4]
cmp ebp, 0x81
jne 0x85550b
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x855525
jmp 0x855820
cmp ebp, 1
je 0x855cc6
cmp ebp, 0xffffffff
jne 0x85589c
mov eax, dword [esp + 0x34]
add eax, 0x23
jmp 0x855dc0
add ecx, 0x29
mov word [edi], cx
mov word [edi + 2], ax
lea ecx, [edi + 4]
test ebp, ebp
js 0x855858
sub ebp, eax
je 0x855dd7
test dword [esp + 0x44], 0x10000000
sete al
or al, byte [esp + 0x5b]
je 0x855d6b
mov eax, dword [esp + 0x44]
mov word [edi + 4], ax
add edi, 6
jmp 0x855d9e
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x85580e
movzx eax, bp
cmp eax, 0x82
jne 0x85580e
mov word [edi], 0x83
mov bp, 0x83
test ebx, ebx
jne 0x855b66
mov ebx, edi
mov dword [esp + 0x3c], edx
sub esp, 4
mov ecx, ebx
mov edx, dword [esp + 0x1c]
push 0
push esi
push dword [esp + 0xa0]
call fcn.00851af0
add esp, 0x10
test eax, eax
jne 0x855b51
movzx eax, word [ebx + 2]
movzx ecx, word [ebx + eax*2]
lea ebx, [ebx + eax*2]
cmp ecx, 0x77
je 0x85553c
jmp 0x855b57
lea ecx, [eax - 0x7d]
movzx ecx, cx
cmp ecx, 0xa
mov edx, ebp
ja 0x855833
mov ecx, dword [esp + 4]
sub ecx, edi
mov dword [esp + 0xa0], ecx
sar ecx, 1
movzx eax, ax
cmp eax, 0x87
jne 0x855cac
movzx eax, word [edi + 4]
cmp eax, 0x91
mov ebp, dword [esp + 0x20]
jne 0x854e67
jmp 0x855cc6
mov esi, dword [esp + 0x190]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
test ecx, ecx
jne 0x855e50
jmp 0x855f75
cmp dword [esp + 0xa8], 0
setne ah
cmp dword [esp + 0x14], 0
sets al
and al, ah
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x8c], ecx
jne 0x855607
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x20], ebp
test al, al
mov eax, dword [esp + 0x40]
jne 0x855615
mov eax, edx
mov dword [esp + 0xac], eax
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
mov dword [esp + 0x44], 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 4]
sub eax, edx
sar eax, 1
mov ebp, eax
mov dword [esp + 0x90], ebp
sub esp, 4
push dword [esp + 0xa4]
push edi
mov dword [esp + 0x10], ecx
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0x10
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x3c]
mov dword [esp + 0x18], edx
lea edx, [edx + ecx*2]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x14]
sub edx, ebp
mov dword [esp + 0x24], edx
mov ebp, dword [esp + 0x3c]
lea edx, [ebp + edx*2 - 0xc8]
cmp eax, edx
mov edx, dword [esp + 0x90]
jbe 0x855754
lea ebp, [ecx + ecx]
cmp ebp, 0x32001
jl 0x8556a3
mov ebp, 0x32000
cmp ecx, 0x31fff
mov eax, 0x48
jg 0x857529
mov edx, ebp
sub edx, ecx
cmp edx, 0x64
jl 0x857529
lea eax, [ebp + ebp]
sub esp, 0xc
push eax
call dword [0x89cdb8]
add esp, 0x10
test eax, eax
je 0x85760a
mov ecx, dword [esi + 0x3c]
add ecx, ecx
sub esp, 4
push ecx
push dword [esi + 0x10]
push eax
mov dword [esp + 0x28], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x28]
add esp, 0x10
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
sub eax, ecx
add eax, edx
mov dword [esi + 0x20], eax
cmp dword [esi + 0x3c], 0x801
jl 0x855721
sub esp, 0xc
push ecx
call dword [0x89cdbc]
mov edx, dword [esp + 0x28]
add esp, 0x10
mov eax, dword [esi + 0x20]
mov dword [esi + 0x10], edx
mov dword [esi + 0x3c], ebp
mov ecx, dword [esp + 0x174]
mov dword [ecx], 0
mov ecx, dword [esi + 0x3c]
lea edx, [edx + ecx*2]
mov ebp, dword [esp + 0x24]
lea edx, [edx + ebp*2 - 0xc8]
cmp eax, edx
ja 0x855693
mov edx, dword [esp + 0x90]
cmp dword [esp + 0x14], edx
mov ebp, edx
jge 0x8557bd
mov edx, dword [esp + 0x18]
lea ecx, [edx + ebp*2]
mov ebx, dword [esp + 0x14]
lea esi, [edx + ebx*2 + 2]
cmp esi, ecx
mov ebp, ebx
ja 0x855773
mov esi, ecx
mov ebx, edx
lea edx, [ebx + ebp*2]
neg ebx
add ebp, ebp
sub ebx, ebp
lea esi, [esi + ebx - 1]
shr esi, 1
mov dword [esp + 0x24], esi
mov ebp, eax
mov esi, dword [esp + 0xb0]
movzx ebx, word [edx]
add ebx, esi
mov word [ebp], bx
add ebp, 2
add edx, 2
cmp edx, ecx
jb 0x855791
mov ecx, dword [esp + 0x24]
lea eax, [eax + ecx*2 + 2]
mov esi, dword [esp + 0x190]
mov dword [esi + 0x20], eax
mov ebx, dword [esp + 0x194]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xb0]
lea ecx, [ecx + edx*2]
mov edx, dword [esp + 0x44]
inc edx
mov dword [esp + 0x44], edx
cmp edx, dword [esp + 0xc]
mov ebp, dword [esp + 0x90]
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x18]
jl 0x855636
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0xac]
mov ecx, ebp
mov ebp, dword [esp + 0x20]
jmp 0x854ee8
lea eax, [ebp - 0x81]
movzx eax, ax
cmp eax, 1
ja 0x85552e
mov eax, dword [esp + 0x34]
add eax, 0x79
mov edi, dword [esp + 0x18]
mov word [edi], ax
jmp 0x8555c9
movzx eax, ax
cmp eax, 0x9d
mov ebp, dword [esp + 0x14]
je 0x855f75
jmp 0x8577a6
mov word [edi], 0xa1
mov ebp, dword [esp + 0x14]
jmp 0x855f75
mov ebp, dword [esp + 0x44]
test ebp, 0x10000000
sete al
or al, byte [esp + 0x5b]
je 0x855ccf
mov word [edi + 4], bp
mov eax, dword [esp + 0x18]
test eax, eax
js 0x85627f
mov word [edi + 6], ax
mov eax, dword [esp + 0x24]
mov word [edi + 8], ax
add edi, 0xa
jmp 0x856282
mov eax, dword [esp + 0x34]
jmp 0x855dbd
mov ecx, dword [esp + 0x34]
add ecx, 0x27
mov eax, dword [esp + 4]
mov word [eax], cx
add ebp, 0xffff
mov word [eax + 2], bp
add eax, 4
mov ecx, eax
jmp 0x855dd7
xor edx, edx
movzx eax, bp
cmp dword [esp + 0x14], eax
jne 0x857770
cmp ecx, 0x2d
mov ebp, dword [esp + 0x5c]
jne 0x855c86
test edx, edx
je 0x8577dc
mov eax, dword [esi + 0x40]
sub eax, edx
inc eax
test eax, eax
mov edx, eax
jg 0x8562bf
jmp 0x857728
neg ebp
mov dword [esp + 0x10], ebp
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov ecx, edx
mov ebp, dword [esp + 0x5c]
jmp 0x856409
cmp eax, 1
mov ecx, dword [esp + 0x10]
jne 0x855f94
cmp edi, 0xffffffff
jne 0x855f94
mov edi, dword [esp + 0x34]
add edi, 0x64
jmp 0x855fac
mov dword [esp + 0x14], ebp
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x1c], edx
lea ecx, [eax + 2]
mov dword [esp + 0x10], ecx
mov dword [esp + 8], ecx
movzx ecx, word [eax + 2]
lea edx, [ecx - 0x30]
movzx edx, dx
cmp edx, 9
jbe 0x8576f6
movzx edx, cx
cmp edx, 0xff
ja 0x8559c7
mov edx, dword [esi + 0xc]
add eax, 4
movzx esi, cx
test byte [edx + esi], 0x10
je 0x8559b7
mov dword [esp + 8], eax
movzx ecx, word [eax]
add eax, 2
cmp ecx, 0x100
jb 0x85599c
add eax, 0xfffffffe
mov esi, dword [esp + 0x190]
mov edx, dword [esp + 0x10]
jmp 0x8559cd
mov edx, dword [esp + 0x10]
mov eax, edx
sub eax, edx
mov ebp, eax
sar ebp, 1
test ebx, ebx
mov edx, dword [esp + 0xc]
mov edi, ebp
mov dword [esp + 0x38], edi
je 0x855a9c
test ebp, ebp
je 0x85774c
cmp cx, word [esp + 0x14]
jne 0x85773a
cmp eax, 0x41
jge 0x85775e
test edx, edx
jne 0x855a08
inc dword [esi + 0x54]
mov eax, dword [ebx]
lea ecx, [eax + 9]
mov dword [ebx], ecx
cmp dword [esi + 0x7c], 0
je 0x855a1a
add eax, 0x11
mov dword [ebx], eax
mov eax, dword [esi + 0x30]
test eax, eax
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
jle 0x855c9f
mov ebp, dword [esi + 0x28]
xor ebx, ebx
xor edx, edx
cmp ecx, dword [ebp + 4]
jne 0x855a88
sub esp, 4
push ecx
push dword [ebp]
push edi
mov edi, edx
call fcn.008692d0
mov ecx, dword [esp + 0x48]
mov edx, edi
mov edi, dword [esp + 0x20]
add esp, 0x10
test eax, eax
jne 0x855a88
cmp dword [esp + 0xc], 0
mov edx, dword [ebp + 8]
jne 0x856827
mov eax, dword [esi + 0x24]
test eax, eax
je 0x855a88
movzx ecx, word [eax + 4]
cmp edx, ecx
je 0x855a7e
mov eax, dword [eax]
test eax, eax
jne 0x855a6e
jmp 0x855a84
mov word [eax + 6], 1
mov ecx, dword [esp + 0x38]
inc ebx
add ebp, 0xc
mov eax, dword [esi + 0x30]
cmp ebx, eax
jl 0x855a34
mov ebp, dword [esp + 0x5c]
jmp 0x8562a5
mov ebp, dword [esi + 0x2c]
mov eax, dword [esi + 0x30]
xor ebx, ebx
test eax, eax
jle 0x856299
mov edi, dword [esp + 0x10]
lea eax, [ebp + 2]
sub esp, 4
push dword [esp + 0x3c]
push eax
push edi
call fcn.008692d0
add esp, 0x10
test eax, eax
jne 0x855ad8
mov eax, dword [esp + 0x38]
cmp word [ebp + eax*2 + 2], 0
je 0x856296
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x34]
lea ebp, [ebp + ecx*2]
inc ebx
cmp ebx, eax
jl 0x855ab0
jmp 0x856299
mov eax, edx
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x50], ebp
mov dword [esp + 0x1c], eax
test ecx, ecx
je 0x852250
cmp ecx, 4
je 0x852250
jmp 0x857708
cmp ebp, 5
ja 0x8567a0
mov ecx, 0x32
bt ecx, ebp
jae 0x8567a0
cmp dword [esi + 0x48], 0
jne 0x8567e6
mov dword [esi + 0x48], 1
jmp 0x8567e6
add ebp, 5
mov word [edi], bp
mov ebx, dword [esp + 0x194]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
movzx eax, bp
cmp eax, 0x87
jne 0x855b8a
movzx eax, word [edi + 2]
movzx eax, word [edi + eax*2]
mov bp, 0x87
cmp eax, 0x77
je 0x855b8a
mov word [edi], 0x8c
mov bp, 0x8c
test ecx, ecx
je 0x855c3f
movzx eax, bp
cmp eax, 0x8c
je 0x855ba7
cmp eax, 0x87
jne 0x855c56
mov dword [esp + 0x3c], edx
mov ebp, edi
mov edi, dword [esp + 4]
mov ebx, edi
sub ebx, ebp
shr ebx, 1
mov word [edi], 0
sub esp, 4
mov edx, 2
mov ecx, ebp
push dword [esp + 0x3c]
push esi
push dword [esp + 0xa0]
call fcn.008580a0
add esp, 0x10
mov eax, edi
mov edi, ebp
sub eax, edi
je 0x855bf6
mov ecx, dword [esp + 4]
sub ecx, dword [esp + 0x20]
dec ecx
movzx edx, byte [ecx + eax - 4]
mov byte [ecx + eax], dl
dec eax
jne 0x855beb
add ebx, 2
movzx eax, word [edi]
cmp eax, 0x87
mov ax, 0x84
mov edi, dword [esp + 0x14]
je 0x855c0f
mov ax, 0x89
mov word [ebp], ax
mov eax, dword [esp + 4]
mov word [eax + 4], 0x7b
mov word [eax + 6], bx
add eax, 8
mov dword [esp + 4], eax
mov word [ebp + 2], bx
mov ebx, dword [esp + 0x194]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
mov ebp, edi
jmp 0x855c67
mov eax, dword [esp + 0x34]
add eax, 0x79
mov ecx, dword [esp + 0x18]
mov word [ecx], ax
mov ebp, dword [esp + 0x14]
jmp 0x855f75
inc ebp
mov word [edi], bp
mov eax, dword [esp + 0x18]
mov word [eax], 0x7b
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
test edi, edi
mov eax, dword [esp + 0xc]
je 0x855c78
mov word [edi], 0x94
cmp eax, 2
jge 0x855e48
jmp 0x855f75
cmp ecx, 0x2b
jne 0x8562bf
test edx, edx
je 0x8577dc
add edx, dword [esi + 0x40]
jmp 0x8562bf
xor edx, edx
xor ebx, ebx
mov ebp, dword [esp + 0x5c]
jmp 0x8562a5
cmp eax, 0x80
mov ebp, dword [esp + 0x20]
ja 0x854e67
cmp dword [esp + 0xc], 0
jle 0x85695b
mov ebp, dword [esp + 0x14]
jmp 0x855f75
lea esi, [ebp + ebp]
and esi, 0xe
sub esp, 4
push esi
lea eax, [esp + 0x158]
push eax
mov edi, ecx
push edi
mov ebp, edx
call sub.msvcrt.dll_memcpy
mov edx, ebp
mov ebp, dword [esp + 0x54]
add esp, 0x10
add edi, esi
mov esi, dword [esp + 0x190]
jmp 0x856282
cmp ecx, 0x7d
sete dh
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xe4]
or ecx, eax
setns dl
mov ecx, dword [esp + 0xe8]
and dl, dh
jne 0x855d2b
mov eax, dword [esp + 0x18]
test dl, dl
jne 0x855d33
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xa8], 0
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x50], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], ecx
jmp 0x8544f8
mov eax, dword [esp + 0x44]
lea edi, [eax + eax]
and edi, 0xe
sub esp, 4
push edi
lea eax, [esp + 0x158]
push eax
mov dword [esp + 0x2c], ebp
mov ebp, ecx
push ebp
mov dword [esp + 0x4c], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x4c]
add esp, 0x10
add edi, ebp
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
test ecx, ecx
js 0x855db8
mov word [edi], cx
mov ecx, dword [esp + 0x24]
mov word [edi + 2], cx
add edi, 4
cmp ebp, 1
jne 0x855dc8
add eax, 0x25
mov word [edi], ax
add edi, 2
jmp 0x855dd5
add eax, 0x27
mov word [edi], ax
mov word [edi + 2], bp
add edi, 4
mov ecx, edi
mov ebp, dword [esp + 0x44]
test ebp, 0x10000000
sete al
or al, byte [esp + 0x5b]
je 0x855df6
mov word [ecx], bp
add ecx, 2
mov dword [esp + 4], ecx
jmp 0x855e22
add ebp, ebp
and ebp, 0xe
mov dword [esp + 0x44], ebp
sub esp, 4
push ebp
lea eax, [esp + 0x158]
push eax
mov edi, ecx
push edi
mov ebp, edx
call sub.msvcrt.dll_memcpy
mov edx, ebp
add esp, 0x10
add edi, dword [esp + 0x44]
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
test edi, edi
js 0x855e48
mov eax, dword [esp + 4]
mov word [eax], di
mov edi, dword [esp + 0x24]
mov word [eax + 2], di
add eax, 4
mov dword [esp + 4], eax
test ecx, ecx
je 0x855f75
mov ebx, dword [esp + 0x98]
movzx eax, word [ebx]
lea ecx, [eax - 0x1d]
movzx ecx, cx
cmp ecx, 0x53
mov dword [esp + 0x14], ebp
ja case.0x855e69.4
jmp dword [ecx*4 + 0x857e70]
cmp dword [esp + 0x88], 0
movzx eax, byte [eax + 0x89e584]
lea ebx, [ebx + eax*2]
mov dword [esp + 0x98], ebx
je case.0x855e69.4
movzx eax, word [ebx - 2]
and eax, 0xfc00
cmp eax, 0xd800
jne case.0x855e69.4
add ebx, 2
jmp 0x855ece
add ebx, 0x22
jmp 0x855ece
movzx eax, byte [0x89e5e1]
movzx ecx, word [ebx + 4]
add ecx, 0xfffffff1
movzx ecx, cx
mov ebp, edx
xor edx, edx
cmp ecx, 2
setb dl
lea eax, [eax + edx*2]
mov edx, ebp
jmp 0x855ecb
movzx eax, word [ebx + 2]
lea ebx, [ebx + eax*2]
mov dword [esp + 0x98], ebx
mov ebp, dword [esp + 4]
sub ebp, ebx
test ebp, ebp
jle 0x855ef6
movzx eax, word [ebx]
cmp eax, 0x75
ja 0x855f03
movzx eax, byte [eax + 0x89d0a8]
test ax, ax
je 0x855f03
mov word [ebx], ax
mov ebx, dword [esp + 0x194]
mov ebp, dword [esp + 0x14]
jmp 0x855f75
mov dword [esp + 0x3c], edx
mov edi, ebp
shr edi, 1
mov eax, dword [esp + 4]
mov word [eax], 0
sub esp, 4
mov edx, 2
mov ecx, ebx
push dword [esp + 0x3c]
push esi
push dword [esp + 0xa0]
call fcn.008580a0
add esp, 0x10
movzx eax, byte [ebx + ebp - 1]
mov byte [ebx + ebp + 3], al
dec ebp
jne 0x855f32
add edi, 2
mov eax, dword [esp + 0x98]
mov word [eax], 0x81
mov ecx, dword [esp + 4]
mov word [ecx + 4], 0x78
mov word [ecx + 6], di
add ecx, 8
mov dword [esp + 4], ecx
mov word [eax + 2], di
mov ebx, dword [esp + 0x194]
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
xor eax, eax
mov cl, byte [esp + 0xa4]
mov al, cl
add eax, eax
or dword [esi + 0x68], eax
xor edi, edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], edx
jmp 0x852895
test eax, eax
jne 0x85673d
cmp edi, 1
jne 0x85673d
mov edi, dword [esp + 0x34]
add edi, 0x66
mov eax, dword [esp + 4]
mov word [eax], di
add eax, 2
mov dword [esp + 4], eax
jmp 0x8555c9
mov dword [esp + 0x9c], 1
mov ecx, 0x86
jmp 0x854aa1
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
lea ecx, [esp + 0xf8]
jmp 0x856003
or dword [ebx], esi
jmp 0x856003
add edx, 2
mov eax, edx
lea ecx, [esp + 0xf4]
mov edx, eax
movzx esi, word [edx]
cmp esi, 0x29
je 0x8561c3
movzx eax, si
cmp eax, 0x3a
je 0x8561c3
lea eax, [edx + 2]
mov dword [esp + 8], eax
lea esi, [esi - 0x2d]
movzx ebp, si
cmp ebp, 0x4b
ja case.0x85603a.1
mov esi, 1
mov ebx, ecx
jmp dword [ebp*4 + 0x857d24]
or byte [ecx + 2], 8
mov esi, 0x400
mov ebx, dword [esp + 0xc4]
jmp case.0x85603a.60
mov esi, 0x200
mov ebx, ecx
or dword [ebx], esi
jmp 0x856003
mov esi, 0x40
mov ebx, ecx
or dword [ebx], esi
jmp 0x856003
mov esi, 2
mov ebx, ecx
or dword [ebx], esi
jmp 0x856003
mov esi, 4
mov ebx, ecx
or dword [ebx], esi
jmp 0x856003
mov esi, 8
mov ebx, ecx
or dword [ebx], esi
jmp 0x856003
sub esp, 4
push 1
push 0x89d133
push ebp
call fcn.00869320
add esp, 0x10
mov ecx, 4
test eax, eax
je 0x856c4b
jmp case.0x85492f.2
sub esp, 4
push 4
push str.MARK
push ebp
call fcn.00869320
add esp, 0x10
test eax, eax
je 0x8568d8
sub esp, 4
push 4
push str.FAIL
push ebp
call fcn.00869320
add esp, 0x10
test eax, eax
je 0x856b65
sub esp, 4
push 4
push str.SKIP
push ebp
call fcn.00869320
add esp, 0x10
test eax, eax
je 0x856c42
sub esp, 4
push 4
push str.THEN
push ebp
call fcn.00869320
add esp, 0x10
mov ecx, 8
test eax, eax
mov esi, dword [esp + 4]
je 0x856c4b
jmp case.0x85492f.2
sub esp, 4
push 5
push str.PRUNE
push ebp
call fcn.00869320
add esp, 0x10
mov ecx, 6
test eax, eax
je 0x856c4b
jmp case.0x85492f.2
sub esp, 4
push 6
push str.ACCEPT
push ebp
call fcn.00869320
add esp, 0x10
test eax, eax
je 0x8568e2
sub esp, 4
push 6
push str.COMMIT
push ebp
call fcn.00869320
add esp, 0x10
mov ecx, 3
test eax, eax
je 0x856c4b
jmp case.0x85492f.2
mov ecx, 6
test ecx, ecx
jne 0x8547d7
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
jmp 0x852895
mov eax, dword [esp + 0xf8]
or eax, dword [esp + 0x28]
mov ecx, dword [esp + 0xf4]
not ecx
and ecx, eax
movzx eax, si
cmp eax, 0x29
jne 0x856852
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0xd8], eax
xor eax, 1
mov dword [esp + 0xf0], eax
mov eax, ecx
and eax, 1
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x134]
mov dword [eax], ecx
xor edi, edi
mov dword [esp + 0x28], ecx
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
jmp 0x852895
mov dword [esp + 0xa8], 0
test eax, eax
js 0x85626a
mov ecx, dword [esp + 0xd4]
test ecx, ecx
jns 0x85626a
mov ecx, dword [esp + 0xfc]
mov dword [esp + 0xe8], ecx
or eax, dword [esp + 0x3c]
mov dword [esp + 0xd4], eax
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
jmp 0x856881
add edi, 6
mov eax, dword [esp + 0x34]
add eax, 0x21
mov word [edi], ax
add edi, 2
mov ecx, edi
jmp 0x855ddb
mov eax, dword [esi + 0x30]
cmp ebx, eax
jge 0x857728
movzx edx, word [ebp]
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x8563e1
mov dword [esp + 0x9c], ecx
mov ebx, dword [esp + 0x194]
mov eax, dword [esi + 0x20]
mov dword [esp + 0x38], eax
mov edi, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
test ebx, ebx
je 0x856331
mov ebx, ecx
mov dword [esp + 0x5c], ebp
sub ebx, ecx
sub dword [esp + 0x38], edi
mov eax, dword [esp + 4]
mov word [eax], 0x75
shr ebx, 1
mov word [eax + 2], bx
mov eax, dword [esp + 0x1c]
cmp eax, 0xfffffffe
mov ecx, 0xffffffff
je 0x8562fb
mov ecx, eax
sar dword [esp + 0x38], 1
mov eax, dword [esp + 4]
mov edi, eax
lea eax, [eax + 4]
mov dword [esp + 0xa8], 0
mov ebp, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
mov eax, dword [esp + 4]
mov word [eax], 0
test edx, edx
mov ebx, ecx
mov dword [esp + 0x30], edi
je 0x856366
sub esp, 4
push edx
push dword [esp + 0x9c]
push ecx
mov edi, edx
mov ebx, ecx
call fcn.0084f060
mov ecx, ebx
mov edx, edi
mov edi, dword [esp + 0x40]
add esp, 0x10
mov ebx, eax
test ebx, ebx
je 0x8564b6
cmp dword [esp + 0x18c], 0
jg 0x8562d2
movzx eax, word [ebx + 2]
test ax, ax
jne 0x856790
mov dword [esp + 0x4c], ecx
mov edi, ebp
cmp dword [esp + 0x188], 0
je 0x8576aa
mov esi, dword [esp + 0x188]
mov ecx, dword [esi + 4]
cmp ecx, ebx
jb 0x8576aa
sub esp, 4
mov edx, dword [esp + 8]
push 0
push dword [esp + 0x198]
push dword [esp + 0xa0]
call fcn.00851af0
add esp, 0x10
test eax, eax
je 0x856932
mov esi, dword [esi]
test esi, esi
jne 0x8563a4
jmp 0x8576aa
mov dword [esp + 0x9c], 0
cmp dword [esp + 0x194], 0
mov dword [esp + 0x10], edx
je 0x8564e4
mov ebx, dword [esp + 0x194]
mov ecx, dword [esp + 0x1c]
cmp ecx, 0xfffffffe
mov edx, 0xffffffff
mov eax, 0xffffffff
je 0x85641e
mov edx, dword [esp + 0x30]
mov eax, ecx
mov ecx, dword [esi + 0x20]
sub ecx, dword [esi + 0x10]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x28]
and ecx, 1
add ecx, 0x71
mov esi, dword [esp + 4]
mov word [esi], cx
mov ecx, dword [esp + 0x10]
mov word [esi + 2], cx
mov esi, 1
shl esi, cl
cmp ecx, 0x20
jl 0x856452
mov esi, 1
mov ecx, dword [esp + 0x190]
or dword [ecx + 0x50], esi
mov esi, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esi + 0x4c]
jle 0x85646e
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x4c], ecx
mov dword [esp + 0x5c], ebp
sar dword [esp + 0x38], 1
mov ecx, dword [esp + 4]
lea ecx, [ecx + 4]
mov esi, dword [esi + 0x24]
test esi, esi
je 0x85649c
movzx edi, word [esi + 4]
cmp dword [esp + 0x10], edi
je 0x856496
mov esi, dword [esi]
test esi, esi
jne 0x856484
jmp 0x85649c
mov word [esi + 6], 1
mov edi, dword [esp + 4]
mov ebp, ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x190]
jmp 0x8544f8
mov dword [esp + 0x4c], ecx
cmp edx, dword [esi + 0x44]
jg 0x857728
mov eax, dword [esi + 0x3c]
lea ecx, [edi + eax*2 - 0xc8]
cmp ecx, dword [esp + 0x38]
jbe 0x85666d
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x38]
jmp 0x85671d
cmp dword [esi + 0x78], 0
je 0x856842
lea ecx, [ebx + 1]
mov dword [esp + 0x9c], 0
cmp ecx, eax
jge 0x856948
lea esi, [ebp + 2]
mov eax, dword [esp + 0x190]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x5c], ebp
lea edi, [ebp + eax*2]
mov ebp, 1
lea eax, [edi + 2]
sub esp, 8
push eax
push esi
call fcn.00869230
add esp, 0x10
test eax, eax
jne 0x85654b
mov eax, dword [esp + 0x190]
mov ecx, eax
mov eax, dword [ecx + 0x34]
lea edi, [edi + eax*2]
lea eax, [ebx + ebp + 1]
inc ebp
cmp eax, dword [ecx + 0x30]
jl 0x85651e
mov dword [esp + 0xc], edi
mov dword [esp + 0x9c], 0
cmp ebp, 2
jl 0x856c14
cmp dword [esp + 0x1c], 0xfffffffe
mov dword [esp + 0x10], 0xffffffff
je 0x85657a
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x190]
mov edx, dword [eax + 0x20]
sub edx, dword [eax + 0x10]
mov eax, dword [esp + 0x28]
and eax, 1
add eax, 0x73
mov ecx, dword [esp + 4]
mov word [ecx], ax
sar edx, 1
mov dword [esp + 0x38], edx
mov word [ecx + 2], bx
mov word [ecx + 4], bp
lea eax, [ecx + 6]
mov dword [esp + 0x14], eax
mov dword [esp + 0x9c], 0
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x5c], eax
jae 0x856f24
mov eax, dword [esp + 0x190]
mov ebx, dword [eax + 0x24]
mov ecx, dword [eax + 0x34]
mov dword [esp + 0x1c], ecx
mov ebp, dword [eax + 0x50]
mov edx, dword [eax + 0x4c]
mov edi, dword [esp + 0x5c]
movzx ecx, word [edi]
mov eax, 1
shl eax, cl
cmp ecx, 0x20
mov esi, dword [esp + 0x190]
jb 0x856606
mov eax, 1
cmp edx, ecx
jl 0x85660a
test ebx, ebx
jne 0x856613
jmp 0x856629
cmp edx, ecx
jge 0x856600
mov dword [esi + 0x4c], ecx
mov edx, ecx
test ebx, ebx
je 0x856629
mov esi, ebx
cmp word [esi + 4], cx
je 0x856623
mov esi, dword [esi]
test esi, esi
jne 0x856615
jmp 0x856629
mov word [esi + 6], 1
or ebp, eax
mov eax, dword [esp + 0x1c]
lea edi, [edi + eax*2]
cmp edi, dword [esp + 0xc]
jb 0x8565e1
mov dword [esp + 0x5c], edi
mov esi, dword [esp + 0x190]
mov dword [esi + 0x50], ebp
mov dword [esp + 0x9c], 0
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x194]
jmp 0x8544f8
mov dword [esp + 0x10], edx
mov edi, ebp
lea ebp, [eax + eax]
cmp ebp, 0x32001
jl 0x856683
mov ebp, 0x32000
cmp eax, 0x31fff
mov ecx, 0x48
jg 0x857865
mov edx, ebp
sub edx, eax
cmp edx, 0x64
jl 0x857865
lea eax, [ebp + ebp]
sub esp, 0xc
push eax
call dword [0x89cdb8]
add esp, 0x10
mov ebx, eax
test ebx, ebx
je 0x857860
mov esi, dword [esp + 0x190]
mov eax, dword [esi + 0x3c]
add eax, eax
sub esp, 4
push eax
push dword [esi + 0x10]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0x10
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
sub eax, ecx
add eax, ebx
mov dword [esi + 0x20], eax
cmp dword [esi + 0x3c], 0x801
jl 0x8566fd
sub esp, 0xc
push ecx
call dword [0x89cdbc]
add esp, 0x10
mov eax, dword [esi + 0x20]
mov dword [esi + 0x10], ebx
mov dword [esi + 0x3c], ebp
mov ecx, dword [esp + 0x174]
mov dword [ecx], 0
mov ecx, dword [esi + 0x14]
mov ebp, edi
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x4c]
lea ebx, [ebx + edx*2]
mov edx, dword [esp + 4]
lea edx, [edx + 2]
sub edx, ecx
shr edx, 1
mov word [eax], dx
add eax, 2
mov dword [esi + 0x20], eax
jmp 0x8562d2
mov eax, edi
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x34]
add esi, 0x68
mov ecx, eax
cmp eax, 0xffffffff
mov eax, dword [esp + 4]
mov word [eax], si
mov esi, dword [esp + 0xc]
mov word [eax + 2], si
jne 0x856762
xor ecx, ecx
mov eax, dword [esp + 4]
mov word [eax + 4], cx
add eax, 6
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x855e50
jmp 0x855f75
mov esi, dword [esp + 0x190]
mov edi, dword [esp + 0x30]
jmp 0x8562d2
lea ecx, [ebp - 0x1d]
cmp ecx, 5
ja 0x8567e6
mov eax, dword [esp + 8]
add eax, 2
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax*4 + 0x89d01c]
add eax, 0xfffffffe
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], edx
jmp 0x852895
cmp eax, 0x11
mov edi, dword [esp + 4]
jb 0x8567f1
xor edi, edi
mov eax, dword [esi + 0x20]
sub eax, dword [esi + 0x10]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x10]
mov eax, ecx
xor eax, 0xe
or eax, dword [esp + 0x94]
mov ax, 0xd
je 0x856813
mov eax, ecx
sar dword [esp + 0x38], 1
mov ebp, dword [esp + 4]
mov word [ebp], ax
add ebp, 2
jmp 0x853f56
mov eax, dword [esp + 0xc]
mov dword [esp + 0x9c], eax
mov ebx, dword [esp + 0x194]
mov ebp, dword [esp + 0x5c]
jmp 0x8562bf
mov dword [esp + 0x9c], 0
jmp 0x8563fe
add edx, 2
mov dword [esp + 8], edx
mov ebx, 0x83
xor edi, edi
xor ebp, ebp
mov esi, dword [esp + 0x190]
jmp 0x854520
mov eax, dword [esp + 0xfc]
mov dword [esp + 4], eax
xor dword [esp + 0xa8], 1
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 0xd4]
test ecx, ecx
jns 0x8568a4
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
jmp 0x8568ab
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], edx
mov eax, dword [esp + 4]
mov dword [esp + 0x40], eax
jmp 0x8544f8
mov ecx, 1
jmp 0x856c4b
test ebx, ebx
jne 0x8577ca
mov eax, dword [esp + 0x190]
mov dword [eax + 0x6c], 1
mov eax, dword [eax + 0x24]
test eax, eax
je 0x856d14
mov edx, dword [esp + 0x194]
mov esi, dword [esp + 4]
test edx, edx
je 0x856917
add dword [edx], 3
jmp 0x856927
mov word [esi], 0xa0
movzx ecx, word [eax + 4]
mov word [esi + 2], cx
add esi, 4
mov eax, dword [eax]
test eax, eax
jne 0x85690e
jmp 0x856d18
mov esi, dword [esp + 0x190]
mov ebp, edi
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x4c]
jmp 0x8562d2
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
jmp 0x856405
xor eax, eax
test ebp, ebp
setne al
mov ebp, eax
jmp 0x854e67
movzx edx, word [ecx + 6]
cmp edx, 0x3f
mov edx, eax
jne 0x8569a9
movzx edx, word [ecx + 8]
cmp edx, 0x43
mov edx, eax
jne 0x8569a9
lea edx, [ecx + 0xa]
movzx esi, word [edx]
lea edi, [esi - 0x30]
movzx edi, di
add edx, 2
cmp edi, 0xa
jb 0x856982
movzx esi, si
cmp esi, 0x29
je 0x85699d
mov edx, eax
movzx eax, word [edx]
cmp eax, 0x28
jne 0x8578a9
movzx eax, word [edx + 2]
cmp eax, 0x3f
jne 0x856b6f
movzx eax, word [edx + 4]
cmp eax, 0x21
je 0x8569e5
movzx eax, ax
cmp eax, 0x3d
je 0x8569e5
cmp eax, 0x3c
jne 0x856b6f
movzx eax, word [edx + 6]
cmp eax, 0x3d
je 0x8569e5
movzx eax, ax
cmp eax, 0x21
jne 0x856b6f
mov esi, dword [esp + 0x190]
mov dword [esi + 0x80], 1
mov ebx, 0x87
jmp 0x856d7d
movzx edx, word [ecx + 6]
cmp edx, 0x21
je 0x856d67
movzx esi, dx
cmp esi, 0x3d
jne 0x856d88
mov esi, dword [esp + 0x190]
inc dword [esi + 0x5c]
add ecx, 8
mov dword [esp + 8], ecx
mov ebx, 0x7f
jmp 0x856d7d
inc dword [esi + 0x5c]
add ecx, 6
mov dword [esp + 8], ecx
mov ebx, 0x7d
jmp 0x856d7d
add ecx, 6
mov dword [esp + 8], ecx
mov ebx, 0x81
jmp 0x856d7d
mov eax, dword [esp + 4]
mov word [eax], 0x76
lea eax, [ecx + 6]
mov dword [esp + 8], eax
movzx ebp, word [ecx + 6]
mov ecx, ebp
add ecx, 0xffffffd0
movzx edx, cx
xor ecx, ecx
cmp edx, 9
ja 0x856aa0
xor ecx, ecx
lea ecx, [ecx + ecx*4]
movzx edx, bp
lea ecx, [edx + ecx*2 - 0x30]
movzx ebp, word [eax + 2]
add eax, 2
mov edx, ebp
add edx, 0xffffffd0
movzx edx, dx
cmp edx, 0xa
jb 0x856a7e
mov dword [esp + 8], eax
mov edx, dword [esp + 4]
lea edx, [edx + 2]
movzx esi, bp
cmp esi, 0x29
jne 0x856c2b
cmp ecx, 0x100
jl 0x856f39
mov eax, dword [esp + 0x174]
mov dword [eax], 0x26
mov eax, 6
jmp 0x856f5d
lea eax, [ecx + 6]
mov dword [esp + 8], eax
movzx ecx, word [ecx + 6]
mov edx, ecx
add edx, 0xffffffc3
movzx edx, dx
cmp edx, 2
jae 0x856d52
movzx ecx, cx
xor edx, edx
cmp ecx, 0x3e
sete dl
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], 0x29
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
jmp case.0x8541ca.5
lea eax, [ecx + 6]
mov dword [esp + 8], eax
movzx eax, word [ecx + 6]
xor edx, edx
cmp eax, 0x29
mov ebp, dword [esp + 0x5c]
je 0x8562bf
jmp 0x857770
mov dword [esi + 0x7c], 1
mov dword [esp + 0x10], 1
add ecx, 6
mov dword [esp + 8], ecx
mov ebx, 0x83
xor edi, edi
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x10]
jmp 0x854520
mov ecx, 5
jmp 0x856c47
lea ebx, [ecx + 6]
mov eax, dword [esp + 4]
mov word [eax + 4], 0x8d
mov dword [esp + 8], ebx
movzx eax, word [ebx]
mov edx, eax
add edx, 0xffffffd9
movzx edx, dx
cmp edx, 0x2b
ja case.0x856b94.1
jmp dword [edx*4 + 0x857c74]
movzx eax, ax
mov dword [esp + 0x20], eax
lea ebx, [ecx + 8]
mov dword [esp + 8], ebx
mov ax, word [ecx + 8]
lea ecx, [eax - 0x30]
movzx ecx, cx
cmp ecx, 9
ja 0x8570d9
add ebx, 2
xor ecx, ecx
cmp ecx, 0xccccccc
jge 0x857842
movzx eax, ax
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 8], ebx
movzx eax, word [ebx]
mov edx, eax
add edx, 0xffffffd0
movzx edx, dx
add ebx, 2
cmp edx, 0xa
jb 0x856bc1
add ebx, 0xfffffffe
mov dl, 1
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 0xffffffff
mov ebp, ebx
xor ebx, ebx
jmp 0x857222
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
mov ebp, dword [esp + 0x5c]
jmp 0x856405
mov eax, dword [esp + 0x174]
mov dword [eax], 0x27
mov eax, 6
jmp 0x856f5d
mov ecx, 7
mov esi, dword [esp + 4]
lea eax, [ecx + ecx*2]
test ebx, ebx
je 0x856c87
mov edx, edi
add ecx, 0xfffffffe
cmp ecx, 3
jbe 0x8577ca
mov edi, dword [esp + 0x194]
test edi, edi
mov esi, dword [eax*4 + 0x89d154]
mov ebp, dword [esp + 4]
mov word [ebp], si
je 0x856ca9
add dword [edi], ebx
mov word [ebp + 2], 0
add ebp, 4
jmp 0x856cc5
cmp ecx, 1
jbe 0x857830
movzx eax, word [eax*4 + 0x89d150]
mov word [esi], ax
add esi, 2
mov edx, esi
mov ebx, dword [esp + 0x194]
jmp 0x856cd5
lea eax, [ebp + 4]
mov word [ebp + 2], bx
lea ecx, [ebx + ebx]
sub esp, 4
push ecx
push edx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0x10
lea ebp, [ebp + ebx*2 + 4]
mov ebx, edi
movzx eax, si
mov word [ebp], 0
add ebp, 2
mov edx, ebp
mov esi, dword [esp + 0x190]
lea ecx, [eax - 0x96]
movzx ecx, cx
cmp ecx, 4
jae 0x856cf3
mov dword [esi + 0x70], 1
jmp 0x856d0b
add eax, 0xffffff66
movzx eax, ax
cmp eax, 1
ja 0x856d0b
mov eax, dword [esp + 0xc4]
or byte [eax + 1], 0x10
xor edi, edi
mov ebp, edx
jmp 0x8544f8
mov esi, dword [esp + 4]
xor eax, eax
mov ecx, dword [esp + 0x190]
cmp dword [ecx + 0x5c], 0
setg al
or eax, 0x9e
mov edx, esi
mov word [esi], ax
cmp dword [esp + 0x1c], 0xfffffffe
mov ecx, 0xffffffff
je 0x856d42
mov ecx, dword [esp + 0x1c]
add edx, 2
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x194]
jmp 0x856cd5
mov dword [esp + 0x20], 0x3e
movzx ecx, cx
cmp ecx, 0x3c
je case.0x8541ca.6
jmp 0x857885
mov esi, dword [esp + 0x190]
inc dword [esi + 0x5c]
add ecx, 8
mov dword [esp + 8], ecx
mov ebx, 0x80
xor edi, edi
mov ecx, dword [esp + 0x28]
jmp 0x85451e
cmp edx, 0xff
ja 0x8578d1
mov esi, dword [esp + 0x190]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], 0x3e
test byte [esi + edx], 0x10
je 0x8578d1
mov edi, dword [esp + 0x20]
lea ecx, [eax + 2]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ecx
movzx ecx, word [eax + 2]
lea edx, [ecx - 0x30]
movzx edx, dx
cmp edx, 9
jbe 0x8576f6
movzx edx, cx
cmp edx, 0xff
ja 0x856e17
mov edx, dword [esp + 0x190]
mov edx, dword [edx + 0xc]
add eax, 4
movzx esi, cx
test byte [edx + esi], 0x10
je 0x856e05
mov dword [esp + 8], eax
movzx ecx, word [eax]
add eax, 2
cmp ecx, 0x100
jb 0x856dea
add eax, 0xfffffffe
cmp dword [esp + 0x194], 0
jne 0x856e29
jmp 0x8570c4
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x194], 0
je 0x8570c4
movzx ecx, cx
cmp edi, ecx
jne 0x85773a
mov ecx, dword [esp + 0x190]
mov ecx, dword [ecx + 0x30]
cmp ecx, 0x2710
jge 0x857897
sub eax, dword [esp + 0xc]
mov ebx, eax
sar ebx, 1
mov edx, dword [esp + 0x190]
mov esi, edx
mov edx, dword [esi + 0x40]
mov dword [esp + 0x10], edx
mov edi, ebx
lea edx, [ebx + 2]
cmp edx, dword [esi + 0x34]
jle 0x856e7f
mov esi, dword [esp + 0x190]
mov dword [esi + 0x34], edx
cmp eax, 0x41
jge 0x85775e
inc dword [esp + 0x10]
test ecx, ecx
jle 0x856ef9
mov esi, dword [esp + 0x190]
mov ebp, dword [esi + 0x28]
add ebp, 8
xor ebx, ebx
jmp 0x856ec3
mov eax, dword [esp + 0x10]
cmp dword [ebp], eax
je 0x857314
test dword [esp + 0x28], 0x80000
je 0x857873
mov esi, dword [esp + 0x190]
mov dword [esi + 0x78], 1
jmp 0x856eec
cmp edi, dword [ebp - 4]
jne 0x856edf
sub esp, 4
push edi
push dword [ebp - 8]
push dword [esp + 0x18]
call fcn.008692d0
add esp, 0x10
test eax, eax
je 0x856e98
mov eax, dword [esp + 0x10]
cmp dword [ebp], eax
je 0x85781e
inc ebx
mov ecx, dword [esi + 0x30]
add ebp, 0xc
cmp ebx, ecx
jl 0x856ec3
jmp 0x856efb
xor ebx, ebx
cmp ebx, ecx
jl 0x8570c4
mov eax, dword [esp + 0x190]
mov ebx, dword [eax + 0x38]
cmp ecx, ebx
jge 0x857031
mov eax, dword [esp + 0x190]
mov ebp, dword [eax + 0x28]
jmp 0x8570a2
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
jmp 0x85701e
mov edx, dword [esp + 4]
mov word [edx + 2], cx
mov ecx, dword [esp + 0x190]
sub eax, dword [ecx + 0x18]
shr eax, 1
inc eax
mov word [edx + 4], ax
mov word [edx + 6], 0
lea edx, [edx + 8]
xor eax, eax
test eax, eax
mov ecx, 4
je 0x856f6a
mov ecx, eax
jmp 0x856f6c
mov edi, eax
mov dword [esp + 0xdc], 1
mov eax, dword [esp + 4]
mov dword [esp + 0x84], eax
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
test ecx, ecx
jne 0x855b16
jmp 0x852250
movzx eax, ax
cmp eax, 0x7b
jne 0x85700f
movzx eax, word [ecx + 0xa]
add eax, 0xffffffd0
movzx eax, ax
cmp eax, 9
ja 0x85700f
add ecx, 0xe
movzx eax, word [ecx - 2]
lea edx, [eax - 0x30]
movzx edx, dx
add ecx, 2
cmp edx, 0xa
jb 0x856fb7
movzx eax, ax
cmp eax, 0x7d
je 0x854202
cmp eax, 0x2c
jne 0x85700f
movzx eax, word [ecx - 2]
cmp eax, 0x7d
je 0x854202
add eax, 0xffffffd0
movzx eax, ax
cmp eax, 9
ja 0x85700f
movzx eax, word [ecx]
lea edx, [eax - 0x30]
movzx edx, dx
add ecx, 2
cmp edx, 0xa
jb 0x856ff2
movzx eax, ax
cmp eax, 0x7d
je 0x854202
mov ebp, dword [esp + 4]
mov word [ebp], 0x9d
add ebp, 2
xor edi, edi
mov ebx, dword [esp + 0x194]
mov esi, dword [esp + 0x190]
jmp 0x8544f8
lea eax, [ebx*8]
lea eax, [eax + eax*2]
sub esp, 0xc
push eax
call dword [0x89cdb8]
add esp, 0x10
mov ebp, eax
test ebp, ebp
je 0x8578ea
add ebx, ebx
mov eax, dword [esp + 0x190]
mov esi, eax
mov eax, dword [esi + 0x38]
shl eax, 2
lea eax, [eax + eax*2]
sub esp, 4
push eax
push dword [esi + 0x28]
push ebp
call sub.msvcrt.dll_memcpy
add esp, 0x10
cmp dword [esi + 0x38], 0x15
jl 0x857092
sub esp, 0xc
mov eax, dword [esp + 0x19c]
push dword [eax + 0x28]
call dword [0x89cdbc]
add esp, 0x10
mov eax, dword [esp + 0x190]
mov dword [eax + 0x28], ebp
mov dword [eax + 0x38], ebx
mov ecx, dword [eax + 0x30]
lea eax, [ecx + ecx*2]
mov edx, dword [esp + 0xc]
mov dword [ebp + eax*4], edx
mov dword [ebp + eax*4 + 4], edi
mov edx, dword [esp + 0x10]
mov dword [ebp + eax*4 + 8], edx
inc ecx
mov eax, dword [esp + 0x190]
mov dword [eax + 0x30], ecx
add dword [esp + 8], 2
mov esi, dword [esp + 0x190]
mov ecx, dword [esp + 0x28]
jmp 0x854252
mov dl, 1
xor ecx, ecx
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 0xffffffff
mov ebp, ebx
mov ebx, 0
mov dword [esp + 0x14], 0
jmp 0x857222
add ecx, 8
mov dword [esp + 8], ecx
mov dword [esp + 0x14], 0x27
jmp 0x85716a
lea ecx, [eax - 0x30]
movzx ecx, cx
mov dword [esp + 0x20], 0
cmp ecx, 9
mov dword [esp + 0x14], 0
jbe 0x856bad
jmp 0x85716f
add ecx, 8
mov dword [esp + 8], ecx
mov dword [esp + 0x14], 0x3e
jmp 0x85716a
movzx eax, word [ecx + 8]
cmp eax, 0x26
jne 0x857303
add ecx, 0xa
mov dword [esp + 8], ecx
mov eax, dword [esp + 4]
mov word [eax + 4], 0x8f
mov dword [esp + 0x14], 0xffffffff
mov ebx, ecx
mov ax, word [ebx]
lea ecx, [eax - 0x30]
movzx ecx, cx
cmp ecx, 9
jbe 0x8576f6
movzx ecx, ax
cmp ecx, 0xff
ja 0x8578a9
movzx eax, ax
mov ecx, dword [esp + 0x190]
mov ecx, dword [ecx + 0xc]
test byte [ecx + eax], 0x10
je 0x8578a9
lea ebp, [ebx + 2]
mov dword [esp + 8], ebp
movzx eax, word [ebx + 2]
cmp eax, 0xff
ja 0x8571d7
lea ebp, [ebx + 4]
movzx edx, ax
test byte [ecx + edx], 0x10
je 0x8571d4
mov dword [esp + 8], ebp
movzx eax, word [ebp]
add ebp, 2
cmp eax, 0xff
jbe 0x8571b9
add ebp, 0xfffffffe
mov ecx, ebp
sub ecx, ebx
sar ecx, 1
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x14], 0
jle 0x85720b
lea edx, [ebp + 2]
mov dword [esp + 8], edx
cmp ax, word [esp + 0x14]
jne 0x8578bb
mov ax, word [edx]
mov dword [esp + 0x20], 0xffffffff
xor ecx, ecx
mov ebp, edx
jmp 0x857215
mov dword [esp + 0x20], 0xffffffff
xor ecx, ecx
mov edx, dword [esp + 0xec]
mov dword [esp + 0xc], edx
xor edx, edx
lea esi, [ebp + 2]
mov dword [esp + 8], esi
movzx eax, ax
cmp eax, 0x29
jne 0x8578bb
cmp dword [esp + 0x194], 0
je 0x85725a
mov ebx, 0x87
xor ebp, ebp
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x190]
mov edi, dword [esp + 0xc]
jmp 0x854520
test dl, dl
je 0x85729c
test ecx, ecx
jle 0x8578fc
cmp dword [esp + 0x20], 0
je 0x85733d
cmp dword [esp + 0x20], 0x2d
jne 0x85732b
mov eax, 1
sub eax, ecx
mov ecx, dword [esp + 0x190]
add eax, dword [ecx + 0x40]
mov ecx, eax
test ecx, ecx
jg 0x85733d
jmp 0x857728
mov eax, dword [esp + 0x190]
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x5c], ecx
mov eax, dword [eax + 0x30]
xor ebp, ebp
test eax, eax
jle 0x85738d
mov esi, dword [esp + 0x5c]
lea eax, [esi + 2]
sub esp, 4
push dword [esp + 0x14]
push eax
push ebx
call fcn.008692d0
add esp, 0x10
test eax, eax
jne 0x8572e3
mov eax, dword [esp + 0x10]
cmp word [esi + eax*2 + 2], 0
je 0x857383
mov eax, dword [esp + 0x190]
mov ecx, eax
mov eax, dword [ecx + 0x30]
mov ecx, dword [ecx + 0x34]
lea esi, [esi + ecx*2]
mov dword [esp + 0x5c], esi
inc ebp
cmp ebp, eax
jl 0x8572b7
jmp 0x85738d
mov dword [esp + 0x14], 0
mov ax, 0x52
jmp 0x85718d
mov eax, dword [esp + 0x190]
mov ecx, dword [eax + 0x30]
cmp ebx, ecx
jge 0x856f03
jmp 0x8570c4
mov eax, dword [esp + 0x190]
add ecx, dword [eax + 0x40]
test ecx, ecx
jle 0x857728
mov eax, dword [esp + 0x190]
cmp ecx, dword [eax + 0x44]
jg 0x857728
mov eax, dword [esp + 4]
mov word [eax + 6], cx
mov eax, dword [esp + 0x190]
cmp ecx, dword [eax + 0x4c]
jle 0x85723f
mov esi, dword [esp + 0x190]
mov dword [esi + 0x4c], ecx
mov ebx, 0x87
xor ebp, ebp
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0xc]
jmp 0x854520
mov eax, dword [esp + 0x190]
mov eax, dword [eax + 0x30]
cmp ebp, eax
jge 0x85743e
mov ecx, dword [esp + 0x5c]
movzx ecx, word [ecx]
mov word [esp + 0x14], cx
movzx ecx, cx
mov edx, dword [esp + 0x190]
cmp dword [edx + 0x4c], ecx
jge 0x8573ba
mov edx, dword [esp + 0x190]
mov dword [edx + 0x4c], ecx
lea ecx, [ebp + 1]
cmp ecx, eax
jge 0x85749f
mov edi, 1
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x190]
mov ecx, dword [ecx + 0x34]
lea esi, [eax + ecx*2 + 2]
lea eax, [eax + ecx*2]
mov dword [esp + 0x5c], eax
sub esp, 4
push dword [esp + 0x14]
push esi
push ebx
call fcn.008692d0
add esp, 0x10
test eax, eax
jne 0x857414
mov eax, dword [esp + 0x10]
cmp word [esi + eax*2], 0
jne 0x857414
lea eax, [ebp + edi + 1]
inc edi
mov ecx, dword [esp + 0x190]
cmp eax, dword [ecx + 0x30]
jl 0x8573ca
cmp edi, 2
jl 0x85749f
mov eax, dword [esp + 4]
mov word [eax + 6], bp
mov word [eax + 8], di
mov edi, dword [esp + 0xc]
inc edi
inc word [eax + 4]
mov ebx, 0x87
xor ebp, ebp
jmp 0x8574ed
cmp dword [esp + 0x14], 0
jne 0x857728
movzx eax, word [ebx]
cmp eax, 0x52
jne 0x8574b1
cmp dword [esp + 0x10], 2
jl 0x8574fd
xor eax, eax
mov ecx, 1
movzx edx, word [ebx + ecx*2]
lea esi, [edx - 0x30]
movzx esi, si
cmp esi, 0xa
jae 0x857728
cmp eax, 0xccccccc
jge 0x857686
lea eax, [eax + eax*4]
lea eax, [edx + eax*2 - 0x30]
inc ecx
cmp ecx, dword [esp + 0x10]
jl 0x857463
test eax, eax
mov ecx, dword [esp + 4]
mov word [ecx + 4], 0x8f
jne 0x85750b
jmp 0x857507
mov eax, dword [esp + 4]
movzx ecx, word [esp + 0x14]
mov word [eax + 6], cx
jmp 0x85723f
cmp dword [esp + 0x10], 6
jne 0x857728
sub esp, 4
push 6
push str.DEFINE
push ebx
call fcn.00869320
add esp, 0x10
test eax, eax
jne 0x857728
mov eax, dword [esp + 4]
mov word [eax + 4], 0x91
mov ebx, 0x87
xor ebp, ebp
mov edi, 1
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x190]
jmp 0x854520
mov eax, dword [esp + 4]
mov word [eax + 4], 0x8f
mov ax, 0xffff
mov ecx, dword [esp + 4]
mov word [ecx + 6], ax
jmp 0x85723f
lea eax, [ecx + edx*2]
cmp esi, eax
mov eax, 0x57
jb 0x857529
mov eax, 0x34
mov ecx, dword [esp + 0x174]
mov dword [ecx], eax
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x34
jmp 0x8575bb
mov eax, dword [esp + 0x178]
mov ecx, dword [esp + 0x40]
mov dword [eax], ecx
mov eax, dword [esp + 0x17c]
mov ecx, dword [esp + 0x1c]
mov dword [eax], ecx
mov eax, dword [esp + 0x180]
mov ecx, dword [esp + 0x24]
mov dword [eax], ecx
mov eax, dword [esp + 0x184]
mov ecx, dword [esp + 0x18]
mov dword [eax], ecx
mov eax, dword [esp + 0x13c]
mov edx, dword [esp + 4]
mov dword [eax], edx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x170]
mov dword [ecx], eax
test ebx, ebx
je 0x8575f4
mov eax, dword [ebx]
mov ecx, 0x7fffffeb
sub ecx, eax
sub edx, dword [esp + 0xb8]
sar edx, 1
cmp ecx, edx
jge 0x8575f0
mov eax, dword [esp + 0x174]
mov dword [eax], 0x14
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x170]
mov dword [ecx], eax
xor eax, eax
add esp, 0x15c
pop esi
pop edi
pop ebx
pop ebp
ret
movzx eax, ax
cmp eax, 0x3a
mov eax, 0xd
je 0x857529
mov eax, 0x1f
jmp 0x857529
add eax, edx
mov dword [ebx], eax
mov eax, 1
jmp 0x8575ca
mov eax, dword [esp + 0x174]
mov dword [eax], 0x47
jmp 0x8575bb
mov eax, 0x15
jmp 0x857529
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3c
jmp 0x8575bb
mov ecx, 5
mov edx, dword [esp + 0x174]
mov dword [edx], ecx
mov dword [esp + 8], eax
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 9
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 6
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x12
jmp 0x8575bb
add eax, 0xfffffffe
movzx ecx, word [eax + 2]
add eax, 2
add ecx, 0xffffffd0
movzx ecx, cx
cmp ecx, 0xa
jb 0x857670
mov dword [esp + 8], eax
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3d
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x40
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x28
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x52
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0xe
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0xc
mov dword [esp + 8], edx
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x54
jmp 0x8575bb
cmp ecx, 6
je 0x8575bb
jmp 0x8575ca
mov eax, dword [esp + 0x174]
mov dword [eax], 0x45
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0xf
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x2a
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3e
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x30
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1d
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x36
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1b
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0xb
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3f
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3b
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x3a
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 7
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x4b
jmp 0x8575bb
mov ecx, 4
mov eax, edx
jmp 0x857628
mov eax, dword [esp + 0x174]
mov dword [eax], 0x41
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x42
jmp 0x8575bb
add ebx, 0xfffffffe
movzx eax, word [ebx + 2]
add ebx, 2
add eax, 0xffffffd0
movzx eax, ax
cmp eax, 0xa
jb 0x857845
mov dword [esp + 8], ebx
jmp 0x857686
mov ecx, 0x15
mov eax, dword [esp + 0x174]
mov dword [eax], ecx
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x2b
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x29
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x31
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1c
jmp 0x8575bb
mov dword [esp + 8], ebp
mov eax, dword [esp + 0x174]
mov dword [eax], 0x1a
jmp 0x8575bb
add ecx, 6
mov dword [esp + 8], ecx
mov eax, dword [esp + 0x174]
mov dword [eax], 0x18
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x15
jmp 0x8575bb
mov eax, dword [esp + 0x174]
mov dword [eax], 0x23
jmp 0x8575bb