Function at 0x5f09a0
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x38
push ebx
push ebp
push esi
push edi
mov edi, eax
mov eax, dword [edi + 0x34]
mov ecx, dword [edi + 4]
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], 1
lea esi, [edi + 8]
call fcn.005f06e0
cmp dword [esi + 0xc], 0x1c
mov dword [esp + 0x28], eax
jb 0x5f1642
push esi
call fcn.005ed6e0
mov eax, dword [edi]
add esp, 4
cmp eax, 7
je 0x5f0a55
cmp eax, 8
je 0x5f0d21
cmp eax, 9
je 0x5f0fef
cmp eax, 0xa
jne 0x5f1699
mov ecx, dword [edi + 0x40]
mov ebp, dword [esp + 0x18]
mov edx, 1
sub ecx, ebp
sub dword [esp + 0x14], edx
js 0x5f0a48
jmp 0x5f0a20
mov eax, dword [edi + 0x60]
mov ebx, ebp
sub ebx, dword [edi + 0x10c]
and ebx, dword [edi + 0x44]
mov bl, byte [ebx + eax]
mov byte [eax + ebp], bl
add ebp, edx
sub ecx, edx
mov dword [esp + 0x18], ebp
je 0x5f1618
sub dword [esp + 0x14], edx
jns 0x5f0a20
cmp dword [edi + 0xb8], 0
jle 0x5f15f8
cmp dword [esi + 0xc], 0x1c
jb 0x5f1620
cmp dword [edi + 0xc4], 0
jne 0x5f0a71
mov eax, edi
call fcn.005ef810
jmp 0x5f0a55
mov ecx, dword [esi + 4]
mov eax, dword [edi + 0x68]
mov dword [esp + 0x2c], 0
cmp ecx, 0x10
jb 0x5f0aaa
mov edx, dword [esi + 8]
movzx ebx, word [edx]
movzx ebp, word [esi + 2]
xor ecx, 0x10
mov dword [esi + 4], ecx
mov ecx, dword [esi + 0xc]
shl ebx, 0x10
or ebx, ebp
add ecx, 0xfffffffe
add edx, 2
mov dword [esi], ebx
mov dword [esi + 0xc], ecx
mov dword [esi + 8], edx
mov ebp, dword [esi + 4]
mov edx, dword [esi]
mov ecx, ebp
shr edx, cl
mov ecx, edx
and ecx, 0xff
lea eax, [eax + ecx*4]
mov cl, byte [eax]
cmp cl, 8
jbe 0x5f0ae6
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e2838]
shr edx, 8
and ecx, edx
movzx edx, word [eax + 2]
add ecx, edx
lea eax, [eax + ecx*4]
movzx ecx, byte [eax]
add dword [esi + 4], ecx
movzx eax, word [eax + 2]
mov ebx, dword [eax*8 + 0x6e3128]
mov edx, dword [eax*8 + 0x6e312c]
mov eax, ebx
shr eax, 0x10
movsx ecx, al
mov dword [edi + 0x10c], ecx
mov ecx, dword [edi + 0x74]
mov eax, ebx
shr eax, 0x18
mov dword [edi + 0xb4], eax
mov al, byte [eax + ecx]
movzx ecx, dx
mov dword [esp + 0x44], edx
mov byte [edi + 0x104], al
mov dword [esp + 0x14], ecx
test bl, bl
je 0x5f0c1d
movzx eax, bl
cmp eax, 0x10
mov eax, dword [esi + 4]
ja 0x5f0b8c
cmp eax, 0x10
jb 0x5f0b6a
mov ecx, dword [esi + 8]
movzx ecx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
xor eax, 0x10
shl ecx, 0x10
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
or ecx, ebp
add eax, 2
mov dword [esi], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov eax, dword [esi]
shr eax, cl
movzx ebp, bl
mov ecx, eax
mov eax, dword [ebp*4 + 0x6e2838]
and eax, ecx
mov ecx, dword [esi + 4]
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5f0c19
cmp eax, 0x10
jb 0x5f0bb2
mov ecx, dword [esi + 8]
movzx edx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl edx, 0x10
or edx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], edx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, eax
mov ebp, edx
shr ebp, cl
add eax, 0x10
and ebp, dword [0x6e2878]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f0bf1
mov ecx, dword [esi + 8]
movzx ecx, word [ecx]
add dword [esi + 0xc], 0xfffffffe
xor eax, 0x10
shl ecx, 0x10
shr edx, 0x10
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
or ecx, edx
add eax, 2
mov dword [esi], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov eax, dword [esi]
shr eax, cl
movzx edx, bl
mov ecx, eax
mov eax, dword [edx*4 + 0x6e27f8]
and eax, ecx
mov ecx, dword [esi + 4]
lea edx, [edx + ecx - 0x10]
shl eax, 0x10
mov dword [esi + 4], edx
mov edx, dword [esp + 0x44]
or eax, ebp
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 4]
shr ebx, 8
movzx ebp, bl
mov dword [esp + 0x38], ebp
cmp ebp, 0x10
ja 0x5f0c72
cmp eax, 0x10
jb 0x5f0c58
mov ecx, dword [esi + 8]
movzx ecx, word [ecx]
movzx ebx, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
xor eax, 0x10
shl ecx, 0x10
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
or ecx, ebx
add eax, 2
mov dword [esi], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov ebx, dword [esi]
mov eax, dword [ebp*4 + 0x6e2838]
shr ebx, cl
and eax, ebx
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5f0cf8
cmp eax, 0x10
jb 0x5f0c98
mov ecx, dword [esi + 8]
movzx edx, word [ecx]
movzx ebx, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl edx, 0x10
or edx, ebx
xor eax, 0x10
add ecx, 2
mov dword [esi], edx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, eax
mov ebx, edx
shr ebx, cl
add eax, 0x10
and ebx, dword [0x6e2878]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f0cd8
mov ecx, dword [esi + 8]
movzx ebp, word [ecx]
add dword [esi + 0xc], 0xfffffffe
shl ebp, 0x10
shr edx, 0x10
or ebp, edx
xor eax, 0x10
add ecx, 2
mov dword [esi], ebp
mov ebp, dword [esp + 0x38]
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov eax, dword [ebp*4 + 0x6e27f8]
shr edx, cl
lea ecx, [ecx + ebp - 0x10]
mov dword [esi + 4], ecx
and eax, edx
mov edx, dword [esp + 0x44]
shl eax, 0x10
or eax, ebx
dec dword [edi + 0xc4]
shr edx, 0x10
add edx, eax
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x2c]
mov dword [edi + 0x108], edx
mov dword [esp + 0x14], eax
je 0x5f0fef
sub dword [edi + 0xb8], eax
cmp dword [edi + 0xb0], 0
je 0x5f0ed7
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5f0d5d
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov eax, dword [esi]
mov ecx, dword [esi + 4]
shr eax, cl
and eax, dword [0x6e2858]
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
cmp dword [esi + 0xc], 0x1c
jb 0x5f163c
cmp dword [edi + 0xc0], 0
jne 0x5f0de3
mov eax, edi
call fcn.005ef250
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5f0dbe
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov eax, dword [esi]
mov ecx, dword [esi + 4]
shr eax, cl
and eax, dword [0x6e2858]
cmp dword [edi + 0xb0], 0
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
je 0x5f0ed7
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
cmp edx, 8
jbe 0x5f0e60
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5f0e22
mov ecx, dword [esi + 8]
movzx ecx, word [ecx]
movzx ebx, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
xor eax, 0x10
shl ecx, 0x10
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
or ecx, ebx
add eax, 2
mov dword [esi], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov edx, dword [edx*4 + 0x6e2818]
shr eax, cl
add ecx, 8
mov dword [esi + 4], ecx
mov ebx, eax
shr ebx, 8
and ebx, edx
and eax, 0xff
add ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x38]
movzx edx, byte [ebx + eax*4]
lea eax, [ebx + eax*4]
add edx, ecx
mov dword [esi + 4], edx
movzx eax, word [eax + 2]
mov dword [esp + 0x2c], eax
jmp 0x5f0e63
add dword [esi + 4], edx
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5f0e8c
mov ecx, dword [esi + 8]
movzx edx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl edx, 0x10
or edx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], edx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov eax, dword [esi]
shr eax, cl
mov ecx, dword [edi + 0x60]
and eax, dword [0x6e2858]
movzx edx, byte [ebx + eax*4]
movzx ebp, word [ebx + eax*4 + 2]
lea eax, [ebx + eax*4]
mov eax, dword [esp + 0x18]
mov bl, byte [esp + 0x2c]
mov byte [eax + ecx], bl
dec dword [edi + 0xc0]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [edi + 0x40]
je 0x5f1630
sub dword [esp + 0x14], 1
jne 0x5f0d75
jmp 0x5f0fe2
mov edx, dword [esp + 0x18]
mov eax, dword [edi + 0x44]
mov ecx, dword [edi + 0x60]
lea ebx, [edx - 1]
add edx, 0xfffffffe
and ebx, eax
mov bl, byte [ebx + ecx]
and edx, eax
mov dl, byte [edx + ecx]
mov byte [esp + 0x13], dl
cmp dword [esi + 0xc], 0x1c
jb 0x5f163c
cmp dword [edi + 0xc0], 0
jne 0x5f0f1c
mov eax, edi
call fcn.005ef250
cmp dword [edi + 0xb0], 0
jne 0x5f0d2e
movzx ecx, byte [esp + 0x13]
mov eax, dword [edi + 0x6c]
movzx edx, byte [ecx + eax + 0x100]
movzx ecx, bl
movzx eax, byte [ecx + eax]
mov ecx, dword [edi + 0x70]
or edx, eax
movzx edx, byte [edx + ecx]
mov eax, dword [edi + 0x78]
mov edx, dword [eax + edx*4]
mov eax, dword [esi + 4]
mov byte [esp + 0x13], bl
cmp eax, 0x10
jb 0x5f0f6f
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ebp, dword [esi + 4]
mov eax, dword [esi]
mov ecx, ebp
shr eax, cl
mov ecx, eax
and ecx, 0xff
lea edx, [edx + ecx*4]
mov cl, byte [edx]
cmp cl, 8
jbe 0x5f0fab
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e2838]
shr eax, 8
and ecx, eax
movzx eax, word [edx + 2]
add ecx, eax
lea edx, [edx + ecx*4]
movzx ecx, byte [edx]
add dword [esi + 4], ecx
mov bl, byte [edx + 2]
mov eax, dword [esp + 0x18]
mov edx, dword [edi + 0x60]
mov byte [eax + edx], bl
dec dword [edi + 0xc0]
mov ecx, 1
add eax, ecx
mov dword [esp + 0x18], eax
cmp eax, dword [edi + 0x40]
je 0x5f164c
sub dword [esp + 0x14], ecx
jne 0x5f0ef5
cmp dword [edi + 0xb8], 0
jle 0x5f15f8
mov eax, dword [edi + 0x10c]
test eax, eax
jl 0x5f101e
xor ecx, ecx
test eax, eax
sete cl
dec dword [edi + 0x48]
mov eax, dword [edi + 0x48]
and eax, 3
mov dword [edi + 0xb4], ecx
mov edx, dword [edi + eax*4 + 0x4c]
mov dword [edi + 0x10c], edx
jmp 0x5f1249
cmp dword [edi + 0xc8], 0
jne 0x5f102e
mov eax, edi
call fcn.005efd60
movzx eax, byte [edi + 0x104]
mov ecx, dword [edi + 0x98]
mov edx, dword [ecx + eax*4]
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5f1067
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ebp, dword [esi + 4]
mov eax, dword [esi]
mov ecx, ebp
shr eax, cl
mov ecx, eax
and ecx, 0xff
lea edx, [edx + ecx*4]
mov cl, byte [edx]
cmp cl, 8
jbe 0x5f10a3
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e2838]
shr eax, 8
and ecx, eax
movzx eax, word [edx + 2]
add ecx, eax
lea edx, [edx + ecx*4]
movzx ecx, byte [edx]
add dword [esi + 4], ecx
movzx edx, word [edx + 2]
dec dword [edi + 0xc8]
mov dword [edi + 0xb4], 0
test edx, 0xfffffff0
jne 0x5f1154
cmp edx, 3
mov dword [edi + 0x10c], edx
jg 0x5f1102
mov eax, dword [edi + 0x48]
mov ecx, edx
mov ebx, 1
sar ebx, cl
mov ecx, eax
sub ecx, edx
dec ecx
and ecx, 3
mov dword [edi + 0xb4], ebx
mov edx, dword [edi + ecx*4 + 0x4c]
sub eax, ebx
mov dword [edi + 0x10c], edx
mov dword [edi + 0x48], eax
jmp 0x5f1249
cmp edx, 0xa
mov eax, 3
lea ecx, [edx - 0xa]
jge 0x5f1114
lea ecx, [edx - 4]
jmp 0x5f1119
mov eax, 2
add ecx, ecx
add ecx, ecx
mov edx, 0x605142
sar edx, cl
mov ecx, dword [edi + 0x48]
add ecx, eax
and ecx, 3
mov eax, dword [edi + ecx*4 + 0x4c]
and edx, 0xf
lea eax, [edx + eax - 3]
mov dword [edi + 0x10c], eax
test eax, eax
jg 0x5f1249
mov dword [edi + 0x10c], 0x7fffffff
jmp 0x5f1249
movzx ebx, byte [edx + edi + 0x270]
mov eax, dword [esi + 4]
mov dword [esp + 0x24], ebx
cmp ebx, 0x10
ja 0x5f11a9
cmp eax, 0x10
jb 0x5f1192
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov ebx, dword [esp + 0x24]
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov ebp, dword [esi]
mov eax, dword [ebx*4 + 0x6e2838]
shr ebp, cl
and eax, ebp
add ecx, ebx
jmp 0x5f122d
cmp eax, 0x10
jb 0x5f11cf
mov ecx, dword [esi + 8]
movzx ebx, word [ecx]
movzx ebp, word [esi + 2]
add dword [esi + 0xc], 0xfffffffe
shl ebx, 0x10
or ebx, ebp
xor eax, 0x10
add ecx, 2
mov dword [esi], ebx
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov ebx, dword [esi]
mov ebp, ebx
shr ebp, cl
lea eax, [ecx + 0x10]
and ebp, dword [0x6e2878]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f120c
mov ecx, dword [esi + 8]
movzx ecx, word [ecx]
add dword [esi + 0xc], 0xfffffffe
xor eax, 0x10
shl ecx, 0x10
shr ebx, 0x10
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
or ecx, ebx
add eax, 2
mov dword [esi], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov ebx, dword [esi]
mov eax, dword [esp + 0x24]
mov eax, dword [eax*4 + 0x6e27f8]
shr ebx, cl
and eax, ebx
mov ebx, dword [esp + 0x24]
shl eax, 0x10
lea ecx, [ecx + ebx - 0x10]
or eax, ebp
mov dword [esi + 4], ecx
mov ecx, dword [edi + 0xf0]
mov dword [esp + 0x3c], eax
shl eax, cl
add eax, dword [edi + edx*4 + 0x490]
mov dword [edi + 0x10c], eax
mov eax, dword [edi + 0x38]
mov ebx, dword [esp + 0x18]
cmp dword [edi + 0x3c], eax
je 0x5f125e
cmp ebx, eax
jge 0x5f125b
mov eax, ebx
mov dword [edi + 0x3c], eax
mov ecx, dword [edi + 0x10c]
mov eax, dword [edi + 0x3c]
cmp ecx, eax
mov ebp, dword [edi + 0x108]
mov dword [esp + 0x14], ebp
jle 0x5f1525
cmp ecx, 0x7ffffffc
jg 0x5f1658
mov ebp, ecx
sub ebp, eax
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x28]
jge 0x5f12e6
sub eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x28]
push ecx
call fcn.005f0660
add esp, 4
test eax, eax
je 0x5f1665
push ebx
push edi
call fcn.005f0700
add ebx, eax
add esp, 8
cmp ebx, dword [edi + 0x40]
mov dword [esp + 0x18], ebx
jl 0x5f15eb
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x20]
mov dword [edi], 0xf
mov dword [edi + 4], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov edx, dword [esp + 0x14]
add edx, 0xfffffffc
cmp edx, 0x1b
ja 0x5f1672
mov ebx, dword [edi + 0x248]
cmp dword [ebx + 0x7c], 0
je 0x5f1344
mov eax, dword [edi + 0x44]
mov edx, dword [esp + 0x18]
mov ecx, dword [edi + 0x60]
add edx, 0xfffffffe
and edx, eax
movzx edx, byte [edx + ecx]
mov ecx, dword [edi + 0x6c]
movzx ecx, byte [edx + ecx + 0x100]
mov edx, dword [esp + 0x18]
dec edx
and edx, eax
mov eax, dword [edi + 0x60]
movzx edx, byte [edx + eax]
mov eax, dword [edi + 0x6c]
movzx eax, byte [edx + eax]
or ecx, eax
mov cl, byte [ecx + ebx + 0x80]
mov byte [esp + 0x12], cl
jmp 0x5f1349
mov byte [esp + 0x12], 0
movzx eax, byte [esp + 0x12]
mov ecx, dword [ebx + eax*4 + 0xc4]
mov edx, dword [ebx + eax*4 + 0x1c4]
mov eax, dword [esp + 0x14]
sub ebp, dword [esp + 0x28]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + eax*4 + 0x20]
mov dword [esp + 0x2c], ecx
movzx ecx, byte [ecx + eax]
mov eax, dword [ecx*4 + 0x6e2838]
dec ebp
and eax, ebp
imul eax, dword [esp + 0x14]
mov dword [esp + 0x24], edx
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov edx, ebp
sar edx, cl
mov dword [esp + 0x38], ecx
mov ecx, dword [edi + 0xb4]
add dword [edi + 0x48], ecx
cmp edx, dword [eax + 0xc]
jge 0x5f13b7
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp byte [eax + ecx], 0
jne 0x5f1485
cmp byte [ebx + 0xc0], 1
jbe 0x5f1485
mov ecx, dword [esp + 0x38]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x1c]
and eax, 0xfffffffe
imul eax, dword [ecx + 0xc]
sub ebp, eax
xor al, al
mov dword [esp + 0x30], ebp
mov byte [esp + 0x13], al
cmp byte [ebx + 0xc0], al
jbe 0x5f1485
movzx ebp, al
mov ecx, dword [ebx + ebp*4 + 0xc4]
mov dword [esp + 0x34], ecx
cmp al, byte [esp + 0x12]
je 0x5f1443
mov eax, dword [esp + 0x14]
mov al, byte [ecx + eax]
test al, al
je 0x5f143f
mov ecx, dword [ebx + ebp*4 + 0x1c4]
mov dword [esp + 0x38], ecx
mov ebp, dword [esp + 0x38]
movzx ecx, al
mov eax, 1
shl eax, cl
and eax, 0xfffffffe
imul eax, dword [ebp + 0xc]
mov ebp, dword [esp + 0x30]
cmp ebp, eax
jl 0x5f1459
sub ebp, eax
mov dword [esp + 0x30], ebp
mov al, byte [esp + 0x13]
mov ecx, dword [edi + 0x248]
inc al
mov byte [esp + 0x13], al
cmp al, byte [ecx + 0xc0]
jb 0x5f13f2
jmp 0x5f1485
mov edx, dword [esp + 0x38]
mov eax, dword [ecx*4 + 0x6e2838]
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x1c], edx
mov edx, ebp
sar edx, cl
mov ecx, dword [esp + 0x14]
and eax, ebp
imul eax, ecx
add eax, dword [ebx + ecx*4 + 0x20]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
cmp byte [eax + ecx], 0
je 0x5f1672
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5f167f
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx + 0xc]
jge 0x5f168c
mov ebx, dword [esp + 0x24]
movsx ecx, word [ecx + 0x18]
add eax, ebx
mov ebx, dword [esp + 0x14]
cmp edx, ecx
jne 0x5f14da
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x20]
push eax
call fcn.00621d10
add esp, 0xc
jmp 0x5f1507
mov ecx, dword [esp + 0x1c]
push edx
push ecx
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x28]
push eax
call fcn.005f3e40
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x5f1507
cmp dword [edi + 0x10c], 0x78
jle 0x5f168c
mov eax, dword [esp + 0x18]
sub dword [edi + 0xb8], ebx
add eax, ebx
cmp eax, dword [edi + 0x40]
mov dword [esp + 0x18], eax
jge 0x5f12c6
jmp 0x5f15eb
mov edx, dword [edi + 0x60]
mov eax, ebx
sub eax, ecx
and eax, dword [edi + 0x44]
lea ecx, [edx + ebx]
add ebx, ebp
mov dword [esp + 0x2c], ebx
lea ebx, [eax + ebp]
mov ebp, dword [edi + 0x48]
mov dword [esp + 0x38], ebx
mov ebx, dword [edi + 0x10c]
and ebp, 3
mov dword [edi + ebp*4 + 0x4c], ebx
inc dword [edi + 0x48]
mov ebx, dword [esp + 0x14]
sub dword [edi + 0xb8], ebx
mov ebx, dword [edx + eax]
mov dword [ecx], ebx
mov ebx, dword [edx + eax + 4]
mov dword [ecx + 4], ebx
mov ebx, dword [edx + eax + 8]
mov dword [ecx + 8], ebx
mov ebx, dword [edx + eax + 0xc]
mov dword [ecx + 0xc], ebx
mov ebx, dword [esp + 0x38]
cmp ebx, dword [esp + 0x18]
jle 0x5f158a
cmp dword [esp + 0x2c], eax
jg 0x5f0a02
mov ebx, dword [edi + 0x40]
cmp dword [esp + 0x2c], ebx
jge 0x5f0a02
cmp dword [esp + 0x38], ebx
jge 0x5f0a02
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x10
jle 0x5f15eb
cmp ebx, 0x20
jle 0x5f15ce
add ebx, 0xfffffff0
push ebx
lea edx, [edx + eax + 0x10]
push edx
add ecx, 0x10
push ecx
call fcn.00621d10
add esp, 0xc
jmp 0x5f15eb
mov ebx, dword [edx + eax + 0x14]
mov ebp, dword [edx + eax + 0x18]
lea eax, [edx + eax + 0x10]
mov edx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ecx + 0x10], edx
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x1c], eax
cmp dword [edi + 0xb8], 0
jg 0x5f0a55
mov dword [edi], 0xe
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x20]
mov dword [edi + 4], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov dword [edi], 0x10
jmp 0x5f15fe
mov dword [edi], 7
mov dword [esp + 0x20], 2
jmp 0x5f15fe
dec dword [esp + 0x14]
mov dword [edi], 0xd
jmp 0x5f15fe
mov dword [edi], 8
mov dword [esp + 0x20], 2
jmp 0x5f15fe
sub dword [esp + 0x14], ecx
mov dword [edi], 0xd
jmp 0x5f15fe
pop edi
pop esi
pop ebp
mov eax, 0xfffffff0
pop ebx
add esp, 0x38
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffee
pop ebx
add esp, 0x38
ret
pop edi
pop esi
pop ebp
mov eax, 0xfffffff4
pop ebx
add esp, 0x38
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffed
pop ebx
add esp, 0x38
ret
pop edi
pop esi
pop ebp
mov eax, 0xfffffff5
pop ebx
add esp, 0x38
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffe1
pop ebx
add esp, 0x38
ret