Function at 0x10014bd0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1dc
mov eax, dword [0x100542d0]
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
mov word [0x1006085c], 0
lea eax, [ebp - 0x1b4]
push eax
call fcn.1000fc90
mov ecx, dword [ebp - 0x1b4]
mov dword [ecx + 0x31c], 1
mov edx, dword [ebp - 0x1b4]
mov byte [edx + 0x318], 0
mov eax, dword [ebp + 0x28]
and eax, 3
mov ecx, dword [ebp - 0x1b4]
mov edx, dword [ecx + 0x328]
and edx, 0xfffffffc
or edx, eax
mov eax, dword [ebp - 0x1b4]
mov dword [eax + 0x328], edx
movzx ecx, word [ebp + 0x14]
and ecx, 8
jne 0x10014c4b
movzx edx, word [ebp + 0x14]
and edx, 0x10
je 0x10014c77
mov eax, dword [ebp + 0x1c]
push eax
mov ecx, dword [ebp + 0x18]
push ecx
movzx edx, word [ebp + 0x14]
and edx, 0x10
neg edx
sbb edx, edx
neg edx
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x1b4]
push ecx
call fcn.10011980
add esp, 0x14
mov dword [ebp + 0x18], eax
mov dx, word [ebp + 0x18]
mov word [0x100602f8], dx
movzx eax, word [ebp + 0x14]
and eax, 1
jne 0x10014c90
jmp 0x10015d96
mov word [0x1006085c], 1
call fcn.10039c90
call fcn.10039cb0
mov dword [0x10060850], eax
mov word [ebp - 0xc], 0
mov word [ebp - 0x1c4], 0
jmp 0x10014cc5
mov cx, word [ebp - 0xc]
add cx, 1
mov word [ebp - 0xc], cx
movsx edx, word [ebp - 0xc]
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + edx]
cmp ecx, 0x2d
je 0x10014d10
movsx edx, word [ebp - 0xc]
movsx eax, word [ebp - 0x1c4]
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + edx]
mov byte [ebp + eax - 0x128], dl
mov ax, word [ebp - 0x1c4]
add ax, 1
mov word [ebp - 0x1c4], ax
movsx ecx, word [ebp - 0xc]
mov edx, dword [ebp + 8]
movzx eax, byte [edx + ecx]
test eax, eax
jne 0x10014d10
jmp 0x10014d12
jmp 0x10014cb9
lea ecx, [ebp - 0x128]
mov dword [ebp - 0x1c8], ecx
mov edx, dword [ebp - 0x1c8]
inc edx
mov dword [ebp - 0x1cc], edx
mov eax, dword [ebp - 0x1c8]
mov cl, byte [eax]
mov byte [ebp - 0x1cd], cl
inc dword [ebp - 0x1c8]
cmp byte [ebp - 0x1cd], 0
jne 0x10014d2b
mov edx, dword [ebp - 0x1c8]
sub edx, dword [ebp - 0x1cc]
mov dword [ebp - 0x1d4], edx
mov al, byte [ebp - 0x1d4]
mov byte [0x1006084c], al
movzx ecx, byte [0x1006084c]
movzx edx, byte [ebp + ecx - 0x129]
cmp edx, 0x27
jne 0x10014d94
mov al, byte [0x1006084c]
sub al, 1
mov byte [0x1006084c], al
movzx ecx, byte [0x1006084c]
mov byte [ebp + ecx - 0x128], 0
movzx edx, byte [0x1006084c]
movzx eax, byte [ebp + edx - 0x129]
movzx ecx, byte [eax + 0x10060d00]
test ecx, ecx
je 0x10014dde
movzx edx, byte [0x1006084c]
cmp edx, 2
jne 0x10014e69
movzx eax, byte [ebp - 0x128]
cmp eax, 0x70
jne 0x10014e69
movzx ecx, byte [ebp - 0x127]
cmp ecx, 0x6f
jne 0x10014e69
push 0x1004f388
push 0xffffffffffffffff
lea edx, [ebp - 0x128]
push edx
call fcn.10039670
add esp, 0xc
lea eax, [ebp - 0x128]
push eax
mov ecx, dword [ebp - 0x1b4]
push ecx
call fcn.10017450
add esp, 8
cmp eax, 0xf42400
je 0x10014e5a
lea edx, [ebp - 0x128]
push edx
push 0xffffffffffffffff
movsx eax, word [0x100602f8]
imul eax, eax, 0x22
add eax, dword [ebp + 0x1c]
push eax
call fcn.100396c0
add esp, 0xc
movsx ecx, word [0x100602f8]
imul ecx, ecx, 0x22
mov edx, dword [ebp + 0x1c]
mov ax, word [0x1006085c]
mov word [edx + ecx + 0x20], ax
mov cx, word [0x100602f8]
add cx, 1
mov word [0x100602f8], cx
movzx edx, byte [0x1006084c]
mov byte [ebp + edx - 0x128], 0
movzx eax, byte [0x1006084c]
cmp eax, 2
jl 0x10014e81
movzx ecx, byte [0x1006084c]
cmp ecx, 0x1a
jle 0x10014e98
mov edx, dword [0x10060fd4]
mov byte [edx], 0
mov word [0x1006085e], 0
jmp 0x10015baf
mov word [ebp - 0xc], 0
jmp 0x10014eac
mov ax, word [ebp - 0xc]
add ax, 1
mov word [ebp - 0xc], ax
movsx ecx, word [ebp - 0xc]
movzx edx, byte [0x1006084c]
sub edx, 1
cmp ecx, edx
jge 0x10014ef1
movsx eax, word [ebp - 0xc]
movzx ecx, byte [ebp + eax - 0x128]
movzx edx, byte [ecx + 0x10060d00]
cmp edx, 0xff
jne 0x10014eef
mov eax, dword [0x10060fd4]
mov byte [eax], 0
mov word [0x1006085e], 0
jmp 0x10015baf
jmp 0x10014ea0
movzx ecx, byte [0x1006084c]
movzx edx, byte [ebp + ecx - 0x129]
movzx eax, byte [edx + 0x10060d00]
sub eax, 1
neg eax
sbb eax, eax
inc eax
mov word [ebp - 0xa4], ax
movzx ecx, byte [0x1006084c]
mov eax, 0xbb8
sub eax, ecx
sub eax, 1
cdq
sub eax, edx
sar eax, 1
mov word [0x10060856], ax
mov edx, dword [0x10060fd4]
mov byte [edx], 0
mov word [0x1006085e], 0
lea eax, [ebp - 0x128]
push eax
push 0xffffffffffffffff
mov ecx, dword [0x10060fd4]
push ecx
call fcn.100396c0
add esp, 0xc
movzx edx, byte [0x1006084c]
mov eax, dword [0x10060fd4]
lea ecx, [eax + edx*2 + 2]
mov dword [0x100609c4], ecx
movzx edx, word [0x1006085e]
movzx eax, word [0x10060856]
cmp edx, eax
jge 0x100151cc
movzx ecx, byte [0x1006084c]
cmp ecx, 2
jle 0x100151cc
lea edx, [ebp - 0x128]
push edx
push 0xffffffffffffffff
lea eax, [ebp - 0x1a8]
push eax
call fcn.100396c0
add esp, 0xc
mov word [ebp - 0x1c4], 0
jmp 0x10014fcd
mov cx, word [ebp - 0x1c4]
add cx, 1
mov word [ebp - 0x1c4], cx
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [0x1006084c]
sub eax, 1
movsx ecx, word [ebp - 0xa4]
sub eax, ecx
cmp edx, eax
jge 0x100151cc
movsx edx, word [ebp - 0x1c4]
test edx, edx
je 0x10015029
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + eax - 0x1a9]
mov byte [ebp - 1], cl
movsx edx, word [ebp - 0x1c4]
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + edx - 0x1a8]
mov byte [ebp + eax - 0x1a9], cl
jmp 0x1001503a
movsx edx, word [ebp - 0x1c4]
mov al, byte [ebp + edx - 0x1a8]
mov byte [ebp - 1], al
movsx ecx, word [ebp - 0x1c4]
movsx edx, word [ebp - 0x1c4]
mov al, byte [ebp + ecx - 0x1a7]
mov byte [ebp + edx - 0x1a8], al
movsx ecx, word [ebp - 0x1c4]
mov dl, byte [ebp - 1]
mov byte [ebp + ecx - 0x1a7], dl
movsx eax, word [ebp - 0x1c4]
mov dword [ebp - 0x1d8], eax
mov ecx, dword [ebp - 0x1d8]
mov dword [ebp - 0x1dc], ecx
cmp dword [ebp - 0x1dc], 0
je 0x10015094
sub dword [ebp - 0x1dc], 1
je 0x100150b1
jmp 0x100150f9
push 0
lea edx, [ebp - 0x1a8]
push edx
call fcn.100193d0
add esp, 8
mov word [ebp - 0x1b0], ax
jmp 0x10015150
movzx eax, byte [0x1006084c]
cmp eax, 3
jne 0x100150df
push 3
movsx ecx, word [ebp - 0x1c4]
lea edx, [ebp + ecx - 0x1a8]
push edx
call fcn.100193d0
add esp, 8
mov word [ebp - 0x1b0], ax
jmp 0x100150f7
push 1
lea eax, [ebp - 0x1a7]
push eax
call fcn.100193d0
add esp, 8
mov word [ebp - 0x1b0], ax
jmp 0x10015150
movzx ecx, byte [0x1006084c]
movsx edx, word [ebp - 0x1c4]
sub ecx, edx
cmp ecx, 2
jne 0x10015130
push 3
movsx eax, word [ebp - 0x1c4]
lea ecx, [ebp + eax - 0x1a8]
push ecx
call fcn.100193d0
add esp, 8
mov word [ebp - 0x1b0], ax
jmp 0x10015150
push 2
movsx edx, word [ebp - 0x1c4]
lea eax, [ebp + edx - 0x1a8]
push eax
call fcn.100193d0
add esp, 8
mov word [ebp - 0x1b0], ax
movsx ecx, word [ebp - 0x1b0]
cmp ecx, 1
jne 0x100151c7
lea edx, [ebp - 0x1a8]
push edx
call fcn.10011e50
add esp, 4
cmp eax, 0xffffffff
jne 0x100151c7
mov word [ebp - 8], 0
movsx eax, word [ebp - 0x1c4]
shl eax, 8
movzx ecx, word [ebp - 8]
or ecx, eax
mov word [ebp - 8], cx
movzx edx, word [0x1006085e]
mov eax, dword [0x100609c4]
mov cx, word [ebp - 8]
mov word [eax + edx*2], cx
mov dx, word [0x1006085e]
add dx, 1
mov word [0x1006085e], dx
movzx eax, word [0x1006085e]
movzx ecx, word [0x10060856]
cmp eax, ecx
jl 0x100151c7
jmp 0x10015baf
jmp 0x10014fbb
movzx edx, word [0x1006085e]
movzx eax, word [0x10060856]
cmp edx, eax
jge 0x10015433
movzx ecx, byte [0x1006084c]
cmp ecx, 2
jle 0x10015433
mov word [ebp - 0x1c4], 0
jmp 0x1001520f
mov dx, word [ebp - 0x1c4]
add dx, 1
mov word [ebp - 0x1c4], dx
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [0x1006084c]
cmp eax, ecx
jge 0x10015433
movsx edx, word [ebp - 0x1c4]
test edx, edx
jne 0x10015288
mov al, byte [ebp - 0x128]
mov byte [ebp - 1], al
mov word [ebp - 0x1b0], 1
jmp 0x10015256
mov cx, word [ebp - 0x1b0]
add cx, 1
mov word [ebp - 0x1b0], cx
movsx edx, word [ebp - 0x1b0]
movzx eax, byte [0x1006084c]
cmp edx, eax
jg 0x10015286
movsx ecx, word [ebp - 0x1b0]
movsx edx, word [ebp - 0x1b0]
mov al, byte [ebp + ecx - 0x128]
mov byte [ebp + edx - 0x1a9], al
jmp 0x10015244
jmp 0x100152aa
movsx ecx, word [ebp - 0x1c4]
mov dl, byte [ebp - 1]
mov byte [ebp + ecx - 0x1a9], dl
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + eax - 0x128]
mov byte [ebp - 1], cl
mov word [ebp - 0x1b0], 0
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [0x1006084c]
sub eax, 1
cmp edx, eax
je 0x100152dd
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [0x1006084c]
sub edx, 2
cmp ecx, edx
jne 0x100152eb
mov word [ebp - 0x1b0], 1
jmp 0x100153b8
movsx eax, word [ebp - 0x1c4]
cmp eax, 1
jle 0x10015336
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [ebp + ecx - 0x129]
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x127]
sub ecx, 0x61
mov eax, 1
shl eax, cl
and eax, dword [edx*4 + 0x100607bc]
je 0x10015336
mov word [ebp - 0x1b0], 1
jmp 0x100153b8
movsx ecx, word [ebp - 0x1c4]
cmp ecx, 1
jne 0x1001537e
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x129]
movsx ecx, word [ebp - 0x1c4]
movzx ecx, byte [ebp + ecx - 0x127]
sub ecx, 0x61
mov edx, 1
shl edx, cl
and edx, dword [eax*4 + 0x1006071c]
je 0x1001537e
mov word [ebp - 0x1b0], 1
jmp 0x100153b8
movsx eax, word [ebp - 0x1c4]
movzx edx, byte [ebp + eax - 0x127]
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x126]
sub ecx, 0x61
mov eax, 1
shl eax, cl
and eax, dword [edx*4 + 0x1006071c]
je 0x100153b8
mov word [ebp - 0x1b0], 1
movsx ecx, word [ebp - 0x1b0]
test ecx, ecx
je 0x1001542e
lea edx, [ebp - 0x1a8]
push edx
call fcn.10011e50
add esp, 4
cmp eax, 0xffffffff
jne 0x1001542e
mov word [ebp - 8], 0x20
movsx eax, word [ebp - 0x1c4]
shl eax, 8
movzx ecx, word [ebp - 8]
or ecx, eax
mov word [ebp - 8], cx
movzx edx, word [0x1006085e]
mov eax, dword [0x100609c4]
mov cx, word [ebp - 8]
mov word [eax + edx*2], cx
mov dx, word [0x1006085e]
add dx, 1
mov word [0x1006085e], dx
movzx eax, word [0x1006085e]
movzx ecx, word [0x10060856]
cmp eax, ecx
jl 0x1001542e
jmp 0x10015baf
jmp 0x100151fd
movzx edx, word [0x1006085e]
movzx eax, word [0x10060856]
cmp edx, eax
jge 0x1001583c
mov word [ebp - 0x1c4], 0
jmp 0x10015466
mov cx, word [ebp - 0x1c4]
add cx, 1
mov word [ebp - 0x1c4], cx
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [0x1006084c]
cmp edx, eax
jg 0x1001583c
mov byte [ebp - 0x1a9], 0
mov byte [ebp - 0xd], 0x19
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [0x1006084c]
cmp ecx, edx
jne 0x1001557f
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + eax - 0x129]
mov byte [ebp - 0x99], cl
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x129]
movzx ecx, byte [eax + 0x10060d00]
cmp ecx, 1
jne 0x100154e3
movsx edx, word [ebp - 0x1c4]
lea eax, [ebp + edx - 0x129]
push eax
call fcn.100131b0
add esp, 4
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [ebp + ecx - 0x129]
mov eax, dword [edx*4 + 0x100607bc]
mov dword [ebp - 0xa0], eax
movsx ecx, word [ebp - 0x1c4]
mov dl, byte [ebp - 0x99]
mov byte [ebp + ecx - 0x129], dl
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x129]
movzx edx, byte [ecx + 0x10060d00]
cmp edx, 2
jge 0x1001553f
mov eax, dword [ebp - 0xa0]
and eax, 0x7c104111
mov dword [ebp - 0xa0], eax
mov ecx, dword [ebp - 0xa0]
or ecx, 0x7c000000
mov dword [ebp - 0xa0], ecx
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x129]
movzx ecx, byte [eax + 0x10060d00]
cmp ecx, 1
jne 0x10015576
mov dword [ebp - 0xa0], 0
mov byte [ebp - 0xd], 0x1e
jmp 0x10015679
movsx edx, word [ebp - 0x1c4]
cmp edx, 1
jle 0x1001561d
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + eax - 0x128]
mov byte [ebp - 0x99], cl
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x128]
movzx ecx, byte [eax + 0x10060d00]
cmp ecx, 1
jne 0x100155d5
movsx edx, word [ebp - 0x1c4]
lea eax, [ebp + edx - 0x128]
push eax
call fcn.100131b0
add esp, 4
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [ebp + ecx - 0x129]
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x128]
mov edx, dword [edx*4 + 0x100607bc]
and edx, dword [ecx*4 + 0x10060d5c]
mov dword [ebp - 0xa0], edx
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp - 0x99]
mov byte [ebp + eax - 0x128], cl
jmp 0x10015679
movsx edx, word [ebp - 0x1c4]
cmp edx, 1
jne 0x1001565d
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x129]
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x128]
mov ecx, dword [ecx*4 + 0x1006071c]
and ecx, dword [eax*4 + 0x10060d5c]
mov dword [ebp - 0xa0], ecx
jmp 0x10015679
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x128]
mov ecx, dword [eax*4 + 0x10060c9c]
mov dword [ebp - 0xa0], ecx
mov word [ebp - 0x1b0], 0
jmp 0x10015696
mov dx, word [ebp - 0x1b0]
add dx, 1
mov word [ebp - 0x1b0], dx
movsx eax, word [ebp - 0x1b0]
movsx ecx, word [ebp - 0x1c4]
cmp eax, ecx
jge 0x100156c6
movsx edx, word [ebp - 0x1b0]
movsx eax, word [ebp - 0x1b0]
mov cl, byte [ebp + edx - 0x128]
mov byte [ebp + eax - 0x1a8], cl
jmp 0x10015684
movsx edx, word [ebp - 0x1b0]
mov byte [ebp + edx - 0x1a8], 0x7e
movsx eax, word [ebp - 0x1b0]
mov byte [ebp + eax - 0x1a7], 0
movsx ecx, word [ebp - 0x1c4]
lea edx, [ebp + ecx - 0x128]
push edx
push 0xffffffffffffffff
lea eax, [ebp - 0x1a8]
push eax
call fcn.10039670
add esp, 0xc
mov cl, byte [ebp - 0x1a9]
mov byte [ebp - 0x1ba], cl
jmp 0x10015721
mov dl, byte [ebp - 0x1ba]
add dl, 1
mov byte [ebp - 0x1ba], dl
movzx eax, byte [ebp - 0x1ba]
movzx ecx, byte [ebp - 0xd]
cmp eax, ecx
jg 0x10015837
cmp dword [ebp - 0xa0], 0
jbe 0x10015837
movzx ecx, byte [ebp - 0x1ba]
mov edx, 1
shl edx, cl
and edx, dword [ebp - 0xa0]
jne 0x1001575c
jmp 0x10015832
movzx ecx, byte [ebp - 0x1ba]
mov eax, 1
shl eax, cl
xor eax, dword [ebp - 0xa0]
mov dword [ebp - 0xa0], eax
movzx ecx, byte [ebp - 0x1ba]
movsx edx, word [ebp - 0x1c4]
mov al, byte [ecx + 0x10060860]
mov byte [ebp + edx - 0x1a8], al
lea ecx, [ebp - 0x1a8]
push ecx
call fcn.10011e50
add esp, 4
mov word [ebp - 0x1c0], ax
movsx edx, word [ebp - 0x1c0]
test edx, edx
jl 0x100157cb
movsx eax, word [ebp - 0x1c0]
movsx ecx, word [ebp - 0x1c4]
sub ecx, 3
cmp eax, ecx
jge 0x100157c9
jmp 0x1001583c
jmp 0x10015832
mov word [ebp - 8], 0x40
movzx edx, byte [ebp - 0x1ba]
movzx eax, word [ebp - 8]
or eax, edx
mov word [ebp - 8], ax
movsx ecx, word [ebp - 0x1c4]
shl ecx, 8
movzx edx, word [ebp - 8]
or edx, ecx
mov word [ebp - 8], dx
movzx eax, word [0x1006085e]
mov ecx, dword [0x100609c4]
mov dx, word [ebp - 8]
mov word [ecx + eax*2], dx
mov ax, word [0x1006085e]
add ax, 1
mov word [0x1006085e], ax
movzx ecx, word [0x1006085e]
movzx edx, word [0x10060856]
cmp ecx, edx
jl 0x10015832
jmp 0x10015baf
jmp 0x10015712
jmp 0x10015454
movzx eax, word [0x1006085e]
movzx ecx, word [0x10060856]
cmp eax, ecx
jge 0x10015baf
lea edx, [ebp - 0x128]
push edx
push 0xffffffffffffffff
lea eax, [ebp - 0x1a8]
push eax
call fcn.100396c0
add esp, 0xc
mov word [ebp - 0x1c4], 0
jmp 0x10015887
mov cx, word [ebp - 0x1c4]
add cx, 1
mov word [ebp - 0x1c4], cx
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [0x1006084c]
cmp edx, eax
jge 0x10015baf
mov byte [ebp - 0x1a9], 0
mov byte [ebp - 0xd], 0x19
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [0x1006084c]
sub edx, 1
cmp ecx, edx
jne 0x10015920
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x129]
mov edx, dword [ecx*4 + 0x100607bc]
mov dword [ebp - 0xa0], edx
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x129]
movzx edx, byte [ecx + 0x10060d00]
cmp edx, 2
jge 0x10015905
mov eax, dword [ebp - 0xa0]
and eax, 0x7c104111
mov dword [ebp - 0xa0], eax
mov ecx, dword [ebp - 0xa0]
or ecx, 0x7c000000
mov dword [ebp - 0xa0], ecx
mov byte [ebp - 0xd], 0x1e
jmp 0x10015a1a
movsx edx, word [ebp - 0x1c4]
cmp edx, 1
jle 0x100159be
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp + eax - 0x127]
mov byte [ebp - 0x99], cl
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x127]
movzx ecx, byte [eax + 0x10060d00]
cmp ecx, 1
jne 0x10015976
movsx edx, word [ebp - 0x1c4]
lea eax, [ebp + edx - 0x127]
push eax
call fcn.100131b0
add esp, 4
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [ebp + ecx - 0x129]
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x127]
mov edx, dword [edx*4 + 0x100607bc]
and edx, dword [ecx*4 + 0x10060d5c]
mov dword [ebp - 0xa0], edx
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp - 0x99]
mov byte [ebp + eax - 0x127], cl
jmp 0x10015a1a
movsx edx, word [ebp - 0x1c4]
cmp edx, 1
jne 0x100159fe
movsx eax, word [ebp - 0x1c4]
movzx ecx, byte [ebp + eax - 0x129]
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x127]
mov ecx, dword [ecx*4 + 0x1006071c]
and ecx, dword [eax*4 + 0x10060d5c]
mov dword [ebp - 0xa0], ecx
jmp 0x10015a1a
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [ebp + edx - 0x127]
mov ecx, dword [eax*4 + 0x10060c9c]
mov dword [ebp - 0xa0], ecx
movsx edx, word [ebp - 0x1c4]
mov al, byte [ebp + edx - 0x1a8]
mov byte [ebp - 1], al
mov cl, byte [ebp - 0x1a9]
mov byte [ebp - 0x1ba], cl
jmp 0x10015a48
mov dl, byte [ebp - 0x1ba]
add dl, 1
mov byte [ebp - 0x1ba], dl
movzx eax, byte [ebp - 0x1ba]
movzx ecx, byte [ebp - 0xd]
cmp eax, ecx
jg 0x10015b99
cmp dword [ebp - 0xa0], 0
jbe 0x10015b99
movzx ecx, byte [ebp - 0x1ba]
mov edx, 1
shl edx, cl
and edx, dword [ebp - 0xa0]
jne 0x10015a83
jmp 0x10015b94
movzx ecx, byte [ebp - 0x1ba]
mov eax, 1
shl eax, cl
xor eax, dword [ebp - 0xa0]
mov dword [ebp - 0xa0], eax
movsx ecx, word [ebp - 0x1c4]
movzx edx, byte [ebp + ecx - 0x128]
movzx eax, byte [ebp - 0x1ba]
movzx ecx, byte [eax + 0x10060860]
cmp edx, ecx
jne 0x10015ad8
movsx edx, word [ebp - 0x1c4]
movzx eax, byte [0x1006084c]
sub eax, 1
cmp edx, eax
jge 0x10015ad8
jmp 0x10015b94
movzx ecx, byte [ebp - 0x1ba]
movsx edx, word [ebp - 0x1c4]
mov al, byte [ecx + 0x10060860]
mov byte [ebp + edx - 0x1a8], al
lea ecx, [ebp - 0x1a8]
push ecx
call fcn.10011e50
add esp, 4
mov word [ebp - 0x1c0], ax
movsx edx, word [ebp - 0x1c0]
test edx, edx
jl 0x10015b30
movsx eax, word [ebp - 0x1c0]
movsx ecx, word [ebp - 0x1c4]
sub ecx, 3
cmp eax, ecx
jge 0x10015b2e
jmp 0x10015baf
jmp 0x10015b94
mov word [ebp - 8], 0x60
movzx edx, byte [ebp - 0x1ba]
movzx eax, word [ebp - 8]
or eax, edx
mov word [ebp - 8], ax
movsx ecx, word [ebp - 0x1c4]
shl ecx, 8
movzx edx, word [ebp - 8]
or edx, ecx
mov word [ebp - 8], dx
movzx eax, word [0x1006085e]
mov ecx, dword [0x100609c4]
mov dx, word [ebp - 8]
mov word [ecx + eax*2], dx
mov ax, word [0x1006085e]
add ax, 1
mov word [0x1006085e], ax
movzx ecx, word [0x1006085e]
movzx edx, word [0x10060856]
cmp ecx, edx
jl 0x10015b94
jmp 0x10015baf
jmp 0x10015a39
movsx eax, word [ebp - 0x1c4]
mov cl, byte [ebp - 1]
mov byte [ebp + eax - 0x1a8], cl
jmp 0x10015875
movzx edx, word [0x1006085e]
cmp edx, 1
jle 0x10015d96
movzx eax, word [0x1006085e]
sub eax, 1
push eax
push 0
call fcn.10014b00
add esp, 8
call fcn.10011df0
mov ecx, dword [0x10060fd4]
push ecx
push 0xffffffffffffffff
lea edx, [ebp - 0x1a8]
push edx
call fcn.100396c0
add esp, 0xc
mov word [0x10060884], 0
jmp 0x10015c0c
mov ax, word [0x10060884]
add ax, 1
mov word [0x10060884], ax
movsx ecx, word [0x10060884]
movzx edx, word [0x1006085e]
cmp ecx, edx
jge 0x10015d96
pushaw
mov dl, byte [0x1006084c]
xor dh, dh
xor eax, eax
mov ax, word [0x10060884]
shl ax, 1
lea esi, [0x100609c4]
mov esi, dword [esi]
add esi, eax
lodsw ax, word [esi]
xchg bx, ax
lea esi, [ebp - 0x1a8]
lea edi, [ebp - 0x98]
xor ecx, ecx
and bh, 0x7f
mov cl, bh
rep movsb byte es:[edi], byte [esi]
mov al, bl
and al, 0xe0
cmp al, 0
jne 0x10015c6c
lodsb al, byte [esi]
xchg ah, al
lodsb al, byte [esi]
stosb byte es:[edi], al
xchg ah, al
stosb byte es:[edi], al
jmp 0x10015cb7
cmp al, 0x20
jne 0x10015c7a
dec dx
lodsb al, byte [esi]
cmp al, 0
jne 0x10015cb7
stosb byte es:[edi], al
jmp 0x10015cbd
cmp al, 0x60
jne 0x10015ca2
lodsb al, byte [esi]
push dx
mov dl, al
xor ax, ax
mov al, bl
and al, 0x1f
push esi
lea esi, [0x10060860]
add esi, eax
lodsb al, byte [esi]
pop esi
stosb byte es:[edi], al
cmp dl, 0
pop dx
jne 0x10015cb7
mov al, 0
stosb byte es:[edi], al
jmp 0x10015cbd
inc dx
xor ax, ax
mov al, bl
and al, 0x1f
push esi
lea esi, [0x10060860]
add esi, eax
lodsb al, byte [esi]
pop esi
stosb byte es:[edi], al
lodsb al, byte [esi]
stosb byte es:[edi], al
cmp al, 0
jne 0x10015cb7
mov byte [ebp - 0x1b9], dl
popaw
mov word [ebp - 0x1b8], 0
lea eax, [ebp - 0x98]
push eax
mov ecx, dword [ebp - 0x1b4]
push ecx
call fcn.10017450
add esp, 8
cmp eax, 0xf42400
jne 0x10015d0c
lea edx, [ebp - 0x98]
push edx
mov eax, dword [ebp - 0x1b4]
push eax
call fcn.10047a30
add esp, 8
cmp eax, 0xf42400
je 0x10015d91
movsx ecx, word [0x100602f8]
push ecx
mov edx, dword [ebp + 0x1c]
push edx
lea eax, [ebp - 0x98]
push eax
call fcn.10011920
add esp, 0xc
cmp eax, 0xffffffff
jne 0x10015d91
lea ecx, [ebp - 0x98]
push ecx
push 0xffffffffffffffff
movsx edx, word [0x100602f8]
imul edx, edx, 0x22
add edx, dword [ebp + 0x1c]
push edx
call fcn.100396c0
add esp, 0xc
movsx eax, word [0x100602f8]
imul eax, eax, 0x22
mov ecx, dword [ebp + 0x1c]
mov dx, word [0x1006085c]
mov word [ecx + eax + 0x20], dx
mov ax, word [0x100602f8]
add ax, 1
mov word [0x100602f8], ax
movsx ecx, word [0x100602f8]
cmp ecx, dword [ebp + 0x20]
je 0x10015d8c
movsx edx, word [0x100602f8]
cmp edx, 0x1e
jne 0x10015d91
jmp 0x10015e95
jmp 0x10015bfc
cmp dword [ebp + 0x24], 0
je 0x10015da5
mov eax, dword [ebp + 0x24]
mov dword [eax], 0
movzx ecx, word [ebp + 0x14]
and ecx, 2
jne 0x10015dbb
movzx edx, word [ebp + 0x14]
and edx, 4
je 0x10015e95
movzx eax, word [0x1006085e]
test eax, eax
jle 0x10015e95
movzx ecx, byte [0x1006084c]
cmp ecx, 4
jle 0x10015e95
movzx edx, word [ebp + 0x14]
and edx, 4
jne 0x10015e4f
movzx eax, byte [0x1006084c]
cmp eax, 6
jl 0x10015e07
movzx ecx, byte [0x1006084c]
cmp ecx, 8
jg 0x10015e07
movsx edx, word [0x100602f8]
cmp edx, 3
jl 0x10015e4f
movzx eax, byte [0x1006084c]
cmp eax, 8
jle 0x10015e2b
movzx ecx, byte [0x1006084c]
cmp ecx, 0xa
jg 0x10015e2b
movsx edx, word [0x100602f8]
cmp edx, 2
jl 0x10015e4f
movzx eax, byte [0x1006084c]
cmp eax, 6
jl 0x10015e4f
movzx ecx, byte [0x1006084c]
cmp ecx, 0xa
jle 0x10015e95
movsx edx, word [0x100602f8]
cmp edx, 1
jge 0x10015e95
movzx eax, word [ebp + 0x14]
and eax, 2
jne 0x10015e69
cmp dword [ebp + 0x24], 0
je 0x10015e67
mov ecx, dword [ebp + 0x24]
mov dword [ecx], 1
jmp 0x10015e95
mov edx, dword [ebp + 0x20]
push edx
mov eax, dword [ebp + 0x1c]
push eax
mov cx, word [0x1006085e]
push ecx
mov dx, word [ebp + 0x14]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp - 0x1b4]
push edx
call fcn.10047a30
add esp, 0x1c
mov eax, dword [ebp - 0x1b4]
push eax
call fcn.1000fce0
movzx ecx, word [ebp + 0x14]
and ecx, 0x20
je 0x10015ec2
movsx edx, word [0x100602f8]
push edx
mov eax, dword [ebp + 0x1c]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.10014990
add esp, 0xc
movsx eax, word [0x100602f8]
mov ecx, dword [ebp - 0x14]
call fcn.10049461
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24