Function at 0x10008650
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x84
mov eax, dword [0x1009ad70]
xor eax, esp
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x9c]
push ebx
mov ebx, dword [esp + 0x98]
push ebp
mov ebp, dword [esp + 0xa0]
push esi
mov esi, dword [esp + 0x94]
push edi
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x64], ebx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], eax
test edi, edi
je 0x100095f7
mov edx, ecx
mov ecx, esi
call 0x100a6db6
mov dword [esp + 0x10], eax
test eax, eax
je 0x100095f7
test ebx, ebx
jns 0x100086d5
mov ecx, edi
call fcn.10008580
lea ebx, [eax + 1]
mov dword [esp + 0x64], ebx
mov ecx, dword [esp + 0x34]
test ecx, 0x300
je 0x100087c1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x100087ba
cmp eax, ebx
jl 0x100095f7
test ecx, 0x100
je 0x1000873e
mov edi, 0x1009a7e0
test ecx, 0x1000000
je 0x1000877b
mov edx, dword [0x1009ad50]
xor ecx, ecx
mov edi, 0x1009a9f8
test edx, edx
je 0x1000877b
xor eax, eax
cmp edx, esi
jne 0x1000872b
mov edi, dword [eax + 0x1009ad58]
inc ecx
lea eax, [ecx + ecx*2]
shl eax, 2
mov edx, dword [eax + 0x1009ad50]
test edx, edx
jne 0x10008721
jmp 0x1000877b
mov edi, 0x1009a6d8
test ecx, 0x1000000
je 0x1000877b
mov edx, dword [0x1009ad50]
xor ecx, ecx
mov edi, 0x1009a8e8
test edx, edx
je 0x1000877b
xor eax, eax
mov edi, edi
cmp edx, esi
jne 0x1000876a
mov edi, dword [eax + 0x1009ad54]
inc ecx
lea eax, [ecx + ecx*2]
shl eax, 2
mov edx, dword [eax + 0x1009ad50]
test edx, edx
jne 0x10008760
test ebx, ebx
jle 0x100087ba
nop
mov eax, dword [esp + 0x28]
lea ebp, [ebp + 2]
movzx esi, word [eax]
add eax, 2
mov dword [esp + 0x28], eax
mov edx, esi
mov eax, esi
shr eax, 8
movzx ecx, byte [eax + edi]
shl ecx, 8
movzx eax, dl
add ecx, eax
mov ax, word [ecx*2 + 0x100966d0]
add ax, si
mov word [ebp - 2], ax
dec ebx
jne 0x10008780
mov ebx, dword [esp + 0x64]
mov eax, ebx
jmp 0x100095f9
test ecx, 0x400
je 0x100095f7
test ecx, 0x7efcebf8
jne 0x100095f7
lea ecx, [ebx + ebx*8]
shl ecx, 2
call fcn.100050a0
mov dword [esp + 0x7c], eax
test eax, eax
je 0x100095f7
add eax, 0xc
mov dword [esp + 0x3c], 0xe7
lea edx, [ebx + ebx*2]
mov dword [esp + 0x44], eax
mov dword [esp + 0x5c], edx
mov edi, eax
lea ecx, [eax + edx*2]
mov dword [esp + 0x68], ecx
mov ebp, ecx
add ecx, edx
mov esi, ecx
mov dword [esp + 0x60], ecx
add ecx, edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x30], ecx
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x6c], ecx
or cl, 0xff
test dl, 1
movzx ecx, cl
cmovne ecx, dword [esp + 0x3c]
mov dword [esp + 0x14], ecx
test edx, 0x10000
je 0x10008857
and ecx, 0xffffffdf
mov dword [esp + 0x14], ecx
test edx, 0x20000
je 0x10008866
and ecx, 0xfffffffe
mov dword [esp + 0x14], ecx
mov ecx, edx
mov dword [esp + 0x1c], 1
and ecx, 0x1000
mov dword [esp + 0x58], ecx
mov ecx, edx
mov edx, dword [esp + 0x28]
and ecx, 4
mov dword [esp + 0x70], ecx
mov dword [esp + 0x18], edx
cmp ebx, 1
jl 0x10008eba
mov eax, dword [esp + 0x10]
movzx edx, word [edx]
mov ecx, dword [eax + 8]
mov ebx, dword [ecx + edx*4]
mov cx, bx
shr cx, 8
mov dword [esp + 0x50], ebx
mov word [esp + 0x4e], cx
cmp cl, 0xb
jbe 0x10008bf5
cmp dword [eax + 0x10], 0
jne 0x1000891e
mov edx, dword [esp + 0x18]
mov byte [edi], cl
mov eax, ebx
mov byte [edi + 1], bl
add edx, 2
shr eax, 0x10
add edi, 2
shr ebx, 0x18
and bl, byte [esp + 0x14]
mov byte [ebp], al
and bl, 0x3f
mov eax, dword [esp + 0x1c]
inc ebp
inc eax
mov byte [esi], bl
inc esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x64]
jg 0x10008eb6
mov eax, dword [esp + 0x10]
movzx ecx, word [edx]
mov eax, dword [eax + 8]
mov ebx, dword [eax + ecx*4]
mov cx, bx
shr cx, 8
cmp cl, 0xb
ja 0x100088c4
jmp 0x10008ea8
mov eax, ebx
mov dword [esp + 0x74], 0
shr eax, 0x18
mov dword [esp + 0x50], eax
test al, 0xc0
je 0x10008a4f
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0
sub eax, 0
je 0x1000897c
dec eax
je 0x10008974
dec eax
je 0x1000896c
movzx eax, word [ecx + 6]
mov dword [esp + 0x48], eax
movzx eax, word [ecx + 4]
mov dword [esp + 0x40], eax
movzx eax, word [ecx + 2]
mov dword [esp + 0x2c], eax
mov eax, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x3c], eax
cmp dword [edx + 0x14], 0
je 0x10008b15
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x64]
jg 0x10008b15
movzx eax, word [ecx + 2]
mov ecx, dword [edx + 8]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x2c]
xor eax, ebx
test eax, 0xe7ffffff
jne 0x10008a18
mov eax, edx
mov edx, dword [eax + 0x18]
movzx eax, word [edx + 4]
test eax, eax
je 0x10008a14
cmp word [edx + 6], cx
jbe 0x100089d1
add edx, 0x10
dec eax
jne 0x100089c3
jmp 0x10008a14
test eax, eax
je 0x10008a14
cmp word [edx + 6], cx
jne 0x10008a14
mov eax, dword [esp + 0x40]
cmp ax, word [edx + 0xc]
jb 0x10008a14
cmp ax, word [edx + 0xe]
ja 0x10008a14
mov eax, dword [esp + 0x10]
movzx ecx, word [edx + 8]
movzx edx, word [edx + 0xa]
mov eax, dword [eax + 0x1c]
lea eax, [eax + ecx*8]
test edx, edx
je 0x10008a10
mov ecx, dword [esp + 0x40]
cmp word [eax], cx
jbe 0x10008a84
add eax, 8
dec edx
jne 0x10008a05
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0x18]
movzx eax, word [edx + 4]
test eax, eax
je 0x10008a3b
mov ecx, dword [esp + 0x3c]
cmp word [edx + 6], cx
mov ecx, dword [esp + 0x2c]
jbe 0x10008b1e
add edx, 0x10
dec eax
jne 0x10008a23
cmp dword [esp + 0x74], 0
jne 0x10008ea4
mov cx, word [esp + 0x4e]
mov eax, dword [esp + 0x50]
mov byte [edi], cl
mov byte [edi + 1], bl
shr ebx, 0x10
mov byte [ebp], bl
and al, byte [esp + 0x14]
and al, 0x3f
mov byte [esi], al
add edi, 2
inc ebp
inc esi
mov dword [esp + 0x38], esi
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
add edx, 2
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
jmp 0x10008eac
test edx, edx
je 0x10008a10
cmp word [eax], cx
jne 0x10008a10
movzx ecx, word [eax + 2]
test cx, cx
je 0x10008b09
cmp cx, word [esp + 0x48]
je 0x10008aac
mov ecx, dword [esp + 0x40]
add eax, 8
dec edx
jne 0x10008a88
jmp 0x10008a10
add dword [esp + 0x18], 8
add dword [esp + 0x1c], 4
mov ebx, dword [eax + 4]
mov ax, bx
shr ax, 8
mov byte [edi], al
mov byte [edi + 1], bl
mov byte [edi + 2], al
mov word [esp + 0x4e], ax
mov eax, ebx
shr eax, 0x10
mov byte [edi + 3], bl
add edi, 4
mov byte [ebp], al
mov byte [ebp + 1], al
add ebp, 2
mov eax, ebx
mov dword [esp + 0x74], 1
shr eax, 0x18
mov dword [esp + 0x50], eax
and al, byte [esp + 0x14]
and al, 0x3f
mov byte [esi], al
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x38], esi
jmp 0x10008a10
add dword [esp + 0x18], 6
add dword [esp + 0x1c], 3
jmp 0x10008ab6
mov ecx, dword [esp + 0x2c]
jmp 0x10008a18
test eax, eax
je 0x10008a3b
mov eax, dword [esp + 0x3c]
cmp word [edx + 6], ax
jne 0x10008a3b
cmp cx, word [edx + 0xc]
jb 0x10008a3b
cmp cx, word [edx + 0xe]
ja 0x10008a3b
mov eax, dword [esp + 0x10]
movzx ecx, word [edx + 8]
mov eax, dword [eax + 0x1c]
lea ecx, [eax + ecx*8]
movzx eax, word [edx + 0xa]
test eax, eax
je 0x10008a3b
mov edx, dword [esp + 0x2c]
cmp word [ecx], dx
jbe 0x10008b76
add ecx, 8
dec eax
jne 0x10008b66
jmp 0x10008a3b
test eax, eax
je 0x10008a3b
mov edi, edi
cmp word [ecx], dx
jne 0x10008a3b
movzx edx, word [ecx + 2]
test dx, dx
je 0x10008be7
cmp dx, word [esp + 0x40]
je 0x10008ba8
mov edx, dword [esp + 0x2c]
add ecx, 8
dec eax
jne 0x10008b80
jmp 0x10008a3b
mov edx, dword [esp + 0x18]
add edx, 6
add dword [esp + 0x1c], 3
mov ecx, dword [ecx + 4]
mov eax, ecx
shr eax, 8
mov byte [edi], al
mov eax, ecx
mov byte [edi + 1], cl
add edi, 2
shr ecx, 0x18
and cl, byte [esp + 0x14]
shr eax, 0x10
and cl, 0x3f
mov byte [ebp], al
inc ebp
mov byte [esi], cl
inc esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], esi
jmp 0x10008ea8
mov edx, dword [esp + 0x18]
add edx, 4
add dword [esp + 0x1c], 2
jmp 0x10008bb4
movzx eax, cl
dec eax
cmp eax, 0xa
ja case.0x10008c09.4
movzx eax, byte [eax + 0x1000962c]
jmp dword [eax*4 + 0x10009614]
shr ebx, 0x10
cmp ebp, dword [esp + 0x68]
jbe 0x10008c21
add byte [ebp - 1], bl
jmp case.0x10008c09.4
mov byte [ebp], bl
inc ebp
jmp case.0x10008c09.4
movzx edx, bl
mov ebx, dword [esp + 0x10]
movzx eax, word [edx*4 + str.AEUETHssaeuethIJijOEoeD]
mov ecx, dword [ebx + 8]
lea ecx, [ecx + eax*4]
movzx eax, byte [ecx + 1]
mov byte [edi], al
movzx eax, byte [ecx]
mov byte [edi + 1], al
add edi, 2
movzx eax, byte [ecx + 2]
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx + 3]
and al, byte [esp + 0x14]
and al, 0x3f
mov byte [esi], al
inc esi
movzx ecx, word [edx*4 + 0x100155aa]
mov eax, dword [ebx + 8]
cmp byte [eax + ecx*4 + 1], 2
lea ecx, [eax + ecx*4]
jne 0x10008ccd
mov ebx, eax
lea ebx, [ebx]
mov eax, dword [ecx]
movzx edx, al
movzx eax, word [edx*4 + str.AEUETHssaeuethIJijOEoeD]
lea ecx, [ebx + eax*4]
movzx eax, byte [ecx + 1]
mov byte [edi], al
movzx eax, byte [ecx]
mov byte [edi + 1], al
add edi, 2
movzx eax, byte [ecx + 2]
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx + 3]
and al, byte [esp + 0x14]
and al, 0x3f
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 8]
movzx eax, word [edx*4 + 0x100155aa]
cmp byte [ebx + eax*4 + 1], 2
lea ecx, [ebx + eax*4]
je 0x10008c80
movzx eax, byte [ecx + 1]
mov byte [edi], al
movzx eax, byte [ecx]
mov byte [edi + 1], al
movzx eax, byte [ecx + 2]
mov byte [ebp], al
movzx eax, byte [ecx + 3]
jmp 0x10008a5a
cmp dword [esp + 0x58], 0
jne case.0x10008c09.7
mov eax, edi
sub eax, dword [esp + 0x44]
cdq
sub eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 1
lea ecx, [eax*4 + 4]
inc al
shr ecx, 8
shl al, 2
or cl, 0x80
mov byte [edx], cl
or al, 3
mov byte [edx + 1], al
mov ax, word [esp + 0x4e]
mov byte [edx + 2], al
mov byte [edx + 3], bl
add edx, 4
mov dword [esp + 0x6c], edx
jmp case.0x10008c09.4
cmp dword [esp + 0x70], 0
jne case.0x10008c09.4
mov byte [edi], cl
mov eax, ebx
mov byte [edi + 1], bl
shr ebx, 0x18
and bl, byte [esp + 0x14]
shr eax, 0x10
and bl, 0x3f
mov byte [ebp], al
mov byte [esi], bl
jmp 0x10008a62
mov ecx, ebx
shr ecx, 0x18
and cl, byte [esp + 0x14]
or ecx, 0xc4
mov dword [esp + 0x48], ecx
cmp bl, 1
ja 0x10008e5d
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffffe
mov word [edi], 0xffff
cmp ecx, dword [esp + 0x28]
jb 0x10008e4f
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 8]
mov dword [esp + 0x3c], edx
movzx eax, word [ecx]
mov edx, dword [edx + eax*4]
mov eax, edx
shr eax, 8
cmp al, 3
jae 0x10008dae
cmp al, 2
je 0x10008e4f
jmp 0x10008db9
jne 0x10008e40
cmp dl, 1
ja 0x10008dcb
mov edx, dword [esp + 0x3c]
sub ecx, 2
cmp ecx, dword [esp + 0x28]
jae 0x10008d95
jmp 0x10008e4f
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x5c]
mov al, byte [eax + 0x20]
mov byte [edi + 1], dl
shr edx, 0x18
and dl, byte [esp + 0x14]
mov byte [edi], al
or dl, 0xc4
mov al, dl
and al, 0xc6
mov byte [ecx], al
mov al, dl
and al, 0xe4
mov byte [ecx + esi*2], al
test bl, bl
jne 0x10008e14
mov ebx, esi
and dl, 0xc5
mov esi, dword [esp + 0x38]
mov byte [ecx + ebx], 4
lea eax, [ecx + ebx*2]
inc ecx
mov byte [ebx + eax], dl
mov dword [esp + 0x30], ecx
jmp 0x10008e4a
mov edx, dword [esp + 0x5c]
and byte [edi + 1], 0x87
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x38]
mov byte [ecx + edx], 5
mov ecx, dword [esp + 0x48]
and cl, 0xc5
lea eax, [eax + edx*2]
mov byte [edx + eax], cl
mov ecx, dword [esp + 0x30]
inc ecx
mov dword [esp + 0x30], ecx
jmp 0x10008e4a
mov eax, edx
mov byte [edi + 1], dl
shr eax, 8
mov byte [edi], al
cmp byte [edi], 0xff
jne 0x10008e90
cmp byte [edi + 1], 0xff
jne 0x10008e90
add edi, 2
jmp case.0x10008c09.4
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov al, byte [eax + 0x20]
mov byte [edi], al
mov al, cl
mov byte [edi + 1], bl
and al, 0xc6
mov ebx, dword [esp + 0x5c]
mov byte [edx], al
mov al, cl
and al, 0xe4
and cl, 0xc5
mov byte [edx + ebx], 3
mov byte [edx + ebx*2], al
lea eax, [edx + ebx*2]
inc edx
mov byte [ebx + eax], cl
mov dword [esp + 0x30], edx
mov al, byte [esp + 0x52]
mov byte [ebp], al
inc ebp
mov byte [esi], 2
inc esi
add edi, 2
jmp 0x10008a67
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x64]
jle 0x10008894
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x20]
xor esi, esi
mov edx, dword [esp + 0x34]
test ecx, ecx
jne 0x10009102
xor ebx, ebx
mov eax, edx
xorps xmm0, xmm0
mov dword [esp + 0x3c], ebx
and eax, 0x1000000
movdqu xmmword [esp + 0x80], xmm0
mov dword [esp + 0x48], eax
je 0x10008f2c
mov edx, dword [esp + 0x44]
cmp edi, edx
je 0x10008eff
mov al, byte [edx]
inc edx
test al, al
je 0x10008efb
inc esi
cmp edx, edi
jne 0x10008ef3
mov edx, dword [esp + 0x34]
mov edi, edx
inc esi
and edi, 2
jne 0x10008f48
mov eax, dword [esp + 0x10]
dec ebp
cmp dword [eax + 0xc], 1
mov eax, dword [esp + 0x68]
jne 0x10008f34
cmp eax, ebp
ja 0x10008f43
mov edi, edi
cmp byte [eax], 2
ja 0x10008f43
inc eax
cmp eax, ebp
jbe 0x10008f20
jmp 0x10008f43
mov esi, edi
sub esi, dword [esp + 0x44]
jmp 0x10008f03
cmp ebp, eax
jb 0x10008f43
cmp byte [ebp], 2
ja 0x10008f43
dec ebp
cmp ebp, eax
jae 0x10008f38
mov ecx, ebp
sub ecx, eax
inc ecx
inc ecx
and edx, 0x20001
add ecx, esi
cmp edx, 0x20001
je 0x10008f79
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x60]
dec eax
cmp eax, edx
jb 0x10008f70
cmp byte [eax], 2
ja 0x10008f70
dec eax
cmp eax, edx
jae 0x10008f66
mov ebx, eax
sub ebx, edx
inc ebx
mov dword [esp + 0x3c], ebx
mov eax, dword [esp + 0x30]
lea edx, [ebx + 1]
add edx, ecx
mov dword [esp + 0x50], edx
cmp dword [esp + 0x54], eax
jae 0x1000904e
test edi, edi
je 0x10008fa2
add edx, 2
mov esi, 2
mov dword [esp + 0x50], edx
jmp 0x10008fa4
xor esi, esi
mov ecx, esi
dec eax
imul ecx, dword [esp + 0x5c]
mov ebp, esi
mov dword [esp + 0x30], eax
shl ebp, 4
add ebp, 0x1009ad1c
mov dword [esp + 0x28], ecx
lea ebx, [ecx + eax]
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x30]
mov dword [esp + 0x58], eax
mov edi, edi
add eax, ebx
mov edx, ebx
cmp ebx, eax
jb 0x10008fed
mov cl, byte [esi + 0x1009a7dc]
mov edi, edi
cmp byte [edx], cl
jne 0x10008fe9
dec edx
cmp edx, eax
jae 0x10008fe0
mov ecx, dword [esp + 0x28]
cmp dword [esp + 0x48], 0
lea edi, [esp + 0x80]
lea edi, [edi + esi*4]
je 0x1000901a
mov ecx, dword [ebp]
inc edx
mov eax, ecx
inc ecx
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x54]
add eax, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x28]
mov dword [edi], eax
jmp 0x10009023
sub edx, ecx
sub edx, dword [esp + 0x54]
inc edx
mov dword [edi], edx
mov edx, dword [esp + 0x50]
add ebp, 0x10
add ecx, dword [esp + 0x5c]
inc edx
add edx, dword [edi]
inc esi
add ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x50], edx
mov dword [esp + 0x28], ecx
cmp ebp, 0x1009ad5c
jl 0x10008fd0
mov ebx, dword [esp + 0x3c]
inc edx
cmp dword [esp + 0x70], 0
jne 0x10009060
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x78]
jmp 0x10009062
xor eax, eax
lea esi, [eax + 1]
add esi, edx
cmp dword [esp + 0x48], 0
je 0x100095e1
test eax, eax
jne 0x100095e1
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
test edi, edi
jne 0x100090c2
test eax, eax
jne 0x100090c2
test ecx, ecx
jne 0x100090c2
test edx, edx
jne 0x100090c2
sub esi, 2
test ebx, ebx
jne 0x100095e1
mov ecx, dword [esp + 0x7c]
dec esi
call fcn.10005070
mov eax, esi
jmp 0x100095f9
sub esi, 2
test edx, edx
jne 0x100095e1
dec esi
test ecx, ecx
jne 0x100095e1
dec esi
test eax, eax
jne 0x100095e1
dec esi
test edi, edi
jne 0x100095e1
dec esi
test ebx, ebx
jne 0x100095e1
mov ecx, dword [esp + 0x7c]
dec esi
call fcn.10005070
mov eax, esi
jmp 0x100095f9
test edx, edx
jns 0x10009164
sub edi, eax
xor ecx, ecx
cmp edi, 4
jb 0x1000912f
mov edx, edi
shr edx, 2
mov eax, edx
neg eax
lea edi, [edi + eax*4]
mov eax, dword [esp + 0x44]
nop
rol ecx, 3
xor ecx, dword [eax]
add eax, 4
dec edx
jne 0x10009120
mov dword [esp + 0x44], eax
test edi, edi
jle 0x10009149
movzx eax, byte [eax]
dec edi
rol ecx, 3
xor ecx, eax
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
test edi, edi
jg 0x10009133
mov edx, dword [esp + 0x24]
mov esi, 4
mov dword [edx], ecx
mov ecx, dword [esp + 0x7c]
call fcn.10005070
mov eax, esi
jmp 0x100095f9
xor ebx, ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x40], ebx
sub edi, eax
je 0x100091bd
test edx, 0x1000000
je 0x100091a0
mov edx, dword [esp + 0x24]
mov edi, edi
mov al, byte [eax]
test al, al
je 0x10009192
cmp esi, ecx
jg 0x100095ee
mov byte [edx + esi], al
inc esi
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
dec edi
jne 0x10009180
jmp 0x100091bd
cmp ecx, edi
jl 0x100095ee
mov edx, dword [esp + 0x24]
push edi
push eax
push edx
call fcn.10009fd0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
mov esi, edi
lea eax, [ecx - 1]
cmp esi, eax
jge 0x100095ee
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
mov byte [edx + esi], 1
inc esi
and eax, 2
mov dword [esp + 0x58], eax
jne 0x1000926f
mov eax, dword [esp + 0x10]
dec ebp
cmp dword [eax + 0xc], ebx
je 0x1000922e
mov edi, dword [esp + 0x68]
cmp edi, ebp
ja 0x1000926f
cmp byte [edi], 2
ja 0x10009207
inc edi
cmp edi, ebp
jbe 0x100091f8
jmp 0x1000926f
cmp ebp, edi
jb 0x1000926f
mov eax, dword [esp + 0x20]
mov ecx, ebp
sub ecx, edi
sub eax, esi
add ecx, 2
cmp eax, ecx
jl 0x100095ee
mov al, byte [ebp]
dec ebp
mov byte [edx + esi], al
inc esi
cmp ebp, edi
jae 0x10009220
jmp 0x1000926b
mov edi, ebp
sub edi, dword [esp + 0x68]
inc edi
je 0x1000926f
cmp byte [ebp], 2
ja 0x10009243
dec ebp
dec edi
jne 0x10009237
jmp 0x1000926f
test edi, edi
je 0x1000926f
sub ecx, esi
lea eax, [edi + 1]
cmp ecx, eax
jl 0x100095ee
push edi
push dword [esp + 0x6c]
lea eax, [edx + esi]
push eax
call fcn.10009fd0
mov edx, dword [esp + 0x30]
add esp, 0xc
add esi, edi
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x34]
cmp esi, ecx
jge 0x1000928b
mov byte [edx + esi], 1
inc esi
cmp esi, ecx
jge 0x10009297
mov ebx, 1
mov dword [esp + 0x14], ebx
jmp 0x10009297
test ebp, 0x1000000
je 0x100095ee
mov eax, ebp
and eax, 0x20001
cmp eax, 0x20001
je 0x100092e5
mov eax, dword [esp + 0x38]
mov edi, eax
dec eax
sub edi, dword [esp + 0x60]
je 0x100092e5
cmp byte [eax], 2
ja 0x100092bd
dec eax
dec edi
jne 0x100092b2
jmp 0x100092e5
test edi, edi
je 0x100092e5
sub ecx, esi
lea eax, [edi + 1]
cmp ecx, eax
jl 0x100095ee
push edi
push dword [esp + 0x64]
lea eax, [edx + esi]
push eax
call fcn.10009fd0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
add esi, edi
cmp esi, ecx
jge 0x100092fd
mov edx, dword [esp + 0x24]
mov byte [edx + esi], 1
inc esi
cmp esi, ecx
jge 0x1000930d
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x1000930d
test ebp, 0x1000000
je 0x100095ee
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
cmp dword [esp + 0x54], edi
jae 0x10009532
cmp dword [esp + 0x58], 0
je 0x1000937e
cmp esi, ecx
jge 0x10009342
mov al, byte [0x1009a8e4]
mov byte [edx + esi], al
inc esi
cmp esi, ecx
jge 0x1000936b
inc ebx
mov dword [esp + 0x40], 1
mov dword [esp + 0x14], ebx
jmp 0x1000934e
test ebp, 0x1000000
je 0x100095ee
cmp esi, ecx
jge 0x1000936b
mov al, byte [0x1009a8e5]
mov byte [edx + esi], al
inc esi
cmp esi, ecx
jge 0x10009377
inc ebx
mov ecx, 2
mov dword [esp + 0x14], ebx
jmp 0x10009380
test ebp, 0x1000000
je 0x100095ee
mov ecx, 2
jmp 0x10009380
xor ecx, ecx
mov edx, dword [esp + 0x20]
dec edi
mov ebp, edi
mov dword [esp + 0x30], edi
sub ebp, dword [esp + 0x54]
inc ebp
mov dword [esp + 0x28], ecx
mov dword [esp + 0x60], ebp
jmp 0x100093a0
mov edi, ebp
test edi, edi
je 0x100094fd
mov dl, byte [ecx + 0x1009a7dc]
mov ebx, ecx
imul ebx, dword [esp + 0x5c]
mov eax, ebx
mov dword [esp + 0x58], ebx
sub eax, ebp
mov ebp, dword [esp + 0x60]
add eax, dword [esp + 0x30]
cmp byte [edi + eax], dl
jne 0x10009407
dec edi
jne 0x100093c7
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
cmp esi, edx
jge 0x10009506
mov ecx, dword [esp + 0x28]
mov al, byte [ecx + 0x1009a8e4]
mov byte [ebx + esi], al
inc esi
mov ebx, dword [esp + 0x14]
cmp esi, edx
jge 0x1000951c
inc ebx
inc dword [esp + 0x40]
mov dword [esp + 0x14], ebx
jmp 0x1000951c
test edi, edi
je 0x100093cf
test dword [esp + 0x34], 0x1000000
je 0x100094cd
mov eax, dword [esp + 0x58]
mov ebp, ecx
mov ecx, dword [esp + 0x54]
add eax, ecx
shl ebp, 4
mov ch, 0x80
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
sub eax, esi
mov ebx, dword [ebp + 0x1009ad1c]
mov dword [esp + 0x48], eax
mov edi, edi
mov eax, dword [esp + 0x3c]
dec edi
mov dl, byte [eax]
inc eax
cmp dword [esp + 0x28], 1
mov dword [esp + 0x3c], eax
jne 0x1000945c
mov al, dl
and dl, 1
shr al, 1
or dl, al
and dl, byte [ebp + 0x1009ad10]
mov al, bl
imul byte [ebp + 0x1009ad18]
mov cl, byte [ebp + 0x1009ad14]
shr dl, cl
mov cl, al
shl dl, cl
or ch, dl
test ebx, ebx
jne 0x100094a0
mov eax, dword [esp + 0x48]
cmp eax, 2
jl 0x100095ee
mov edx, dword [esp + 0x24]
mov byte [edx + esi], ch
inc esi
mov ebx, dword [ebp + 0x1009ad1c]
dec eax
mov dword [esp + 0x48], eax
mov ch, 0x80
jmp 0x100094a5
mov edx, dword [esp + 0x24]
dec ebx
test edi, edi
jne 0x10009440
cmp ebx, dword [ebp + 0x1009ad1c]
je 0x100094c4
mov eax, dword [esp + 0x20]
sub eax, esi
cmp eax, 2
jl 0x100095ee
mov byte [edx + esi], ch
inc esi
mov ebp, dword [esp + 0x60]
jmp 0x100093cf
mov ecx, dword [esp + 0x20]
lea eax, [edi + 1]
sub ecx, esi
cmp ecx, eax
jl 0x100095ee
mov eax, dword [esp + 0x54]
add eax, ebx
mov ebx, dword [esp + 0x24]
push edi
push eax
lea eax, [ebx + esi]
push eax
call fcn.10009fd0
add esp, 0xc
add esi, edi
jmp 0x100093d3
mov ebx, dword [esp + 0x24]
jmp 0x100093d7
test dword [esp + 0x34], 0x1000000
je 0x100095ee
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x28], ecx
cmp ecx, 4
jl 0x100093a0
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x34]
cmp esi, ecx
jge 0x10009546
mov edi, dword [esp + 0x24]
mov byte [edi + esi], 1
inc esi
cmp esi, ecx
jge 0x10009556
inc ebx
jmp 0x10009556
test ebp, 0x1000000
je 0x100095ee
mov edi, dword [esp + 0x24]
cmp dword [esp + 0x70], 0
jne 0x10009591
mov edx, dword [esp + 0x6c]
sub edx, dword [esp + 0x78]
mov dword [esp + 0x6c], edx
je 0x10009591
sub ecx, esi
lea eax, [edx + 1]
cmp ecx, eax
jl 0x100095ee
push edx
push dword [esp + 0x7c]
lea eax, [edi + esi]
push eax
call fcn.10009fd0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
add esi, dword [esp + 0x6c]
cmp esi, ecx
jge 0x1000959c
mov byte [edi + esi], 0
inc esi
jmp 0x100095a9
test ebp, 0x1000000
je 0x100095ee
mov byte [ecx + edi - 1], 0
test ebx, ebx
je 0x100095e1
test ebp, 0x1000000
je 0x100095e1
mov edx, dword [esp + 0x40]
lea esp, [esp]
lea ecx, [esi - 2]
dec ebx
add ecx, edi
test edx, edx
je 0x100095d4
mov al, byte [ecx]
cmp al, byte [ebx + 0x1009a9ec]
jmp 0x100095d7
cmp byte [ecx], 1
jne 0x100095e1
dec esi
mov byte [ecx], 0
test ebx, ebx
jne 0x100095c0
mov ecx, dword [esp + 0x7c]
call fcn.10005070
mov eax, esi
jmp 0x100095f9
mov ecx, dword [esp + 0x7c]
call fcn.10005070
xor eax, eax
mov ecx, dword [esp + 0x90]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10009fbe
add esp, 0x84
ret 0x18