Function at 0x5e6020
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.005e5d60
cmp dword [esi + 0xc], 0x1c
mov dword [esp + 0x28], eax
jb 0x5e6cc2
push esi
call fcn.005e2d60
mov eax, dword [edi]
add esp, 4
cmp eax, 7
je 0x5e60d5
cmp eax, 8
je 0x5e63a1
cmp eax, 9
je 0x5e666f
cmp eax, 0xa
jne 0x5e6d19
mov ecx, dword [edi + 0x40]
mov ebp, dword [esp + 0x18]
mov edx, 1
sub ecx, ebp
sub dword [esp + 0x14], edx
js 0x5e60c8
jmp 0x5e60a0
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 0x5e6c98
sub dword [esp + 0x14], edx
jns 0x5e60a0
cmp dword [edi + 0xb8], 0
jle 0x5e6c78
cmp dword [esi + 0xc], 0x1c
jb 0x5e6ca0
cmp dword [edi + 0xc4], 0
jne 0x5e60f1
mov eax, edi
call fcn.005e4e90
jmp 0x5e60d5
mov ecx, dword [esi + 4]
mov eax, dword [edi + 0x68]
mov dword [esp + 0x2c], 0
cmp ecx, 0x10
jb 0x5e612a
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 0x5e6166
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d72b8]
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 + 0x6d7ba8]
mov edx, dword [eax*8 + 0x6d7bac]
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 0x5e629d
movzx eax, bl
cmp eax, 0x10
mov eax, dword [esi + 4]
ja 0x5e620c
cmp eax, 0x10
jb 0x5e61ea
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 + 0x6d72b8]
and eax, ecx
mov ecx, dword [esi + 4]
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e6299
cmp eax, 0x10
jb 0x5e6232
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 [0x6d72f8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e6271
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 + 0x6d7278]
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 0x5e62f2
cmp eax, 0x10
jb 0x5e62d8
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 + 0x6d72b8]
shr ebx, cl
and eax, ebx
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e6378
cmp eax, 0x10
jb 0x5e6318
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 [0x6d72f8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e6358
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 + 0x6d7278]
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 0x5e666f
sub dword [edi + 0xb8], eax
cmp dword [edi + 0xb0], 0
je 0x5e6557
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e63dd
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 [0x6d72d8]
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
cmp dword [esi + 0xc], 0x1c
jb 0x5e6cbc
cmp dword [edi + 0xc0], 0
jne 0x5e6463
mov eax, edi
call fcn.005e48d0
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e643e
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 [0x6d72d8]
cmp dword [edi + 0xb0], 0
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
je 0x5e6557
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
cmp edx, 8
jbe 0x5e64e0
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e64a2
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 + 0x6d7298]
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 0x5e64e3
add dword [esi + 4], edx
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e650c
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 [0x6d72d8]
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 0x5e6cb0
sub dword [esp + 0x14], 1
jne 0x5e63f5
jmp 0x5e6662
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 0x5e6cbc
cmp dword [edi + 0xc0], 0
jne 0x5e659c
mov eax, edi
call fcn.005e48d0
cmp dword [edi + 0xb0], 0
jne 0x5e63ae
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 0x5e65ef
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 0x5e662b
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d72b8]
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 0x5e6ccc
sub dword [esp + 0x14], ecx
jne 0x5e6575
cmp dword [edi + 0xb8], 0
jle 0x5e6c78
mov eax, dword [edi + 0x10c]
test eax, eax
jl 0x5e669e
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 0x5e68c9
cmp dword [edi + 0xc8], 0
jne 0x5e66ae
mov eax, edi
call fcn.005e53e0
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 0x5e66e7
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 0x5e6723
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d72b8]
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 0x5e67d4
cmp edx, 3
mov dword [edi + 0x10c], edx
jg 0x5e6782
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 0x5e68c9
cmp edx, 0xa
mov eax, 3
lea ecx, [edx - 0xa]
jge 0x5e6794
lea ecx, [edx - 4]
jmp 0x5e6799
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 0x5e68c9
mov dword [edi + 0x10c], 0x7fffffff
jmp 0x5e68c9
movzx ebx, byte [edx + edi + 0x270]
mov eax, dword [esi + 4]
mov dword [esp + 0x24], ebx
cmp ebx, 0x10
ja 0x5e6829
cmp eax, 0x10
jb 0x5e6812
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 + 0x6d72b8]
shr ebp, cl
and eax, ebp
add ecx, ebx
jmp 0x5e68ad
cmp eax, 0x10
jb 0x5e684f
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 [0x6d72f8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e688c
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 + 0x6d7278]
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 0x5e68de
cmp ebx, eax
jge 0x5e68db
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 0x5e6ba5
cmp ecx, 0x7ffffffc
jg 0x5e6cd8
mov ebp, ecx
sub ebp, eax
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x28]
jge 0x5e6966
sub eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x28]
push ecx
call fcn.005e5ce0
add esp, 4
test eax, eax
je 0x5e6ce5
push ebx
push edi
call fcn.005e5d80
add ebx, eax
add esp, 8
cmp ebx, dword [edi + 0x40]
mov dword [esp + 0x18], ebx
jl 0x5e6c6b
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 0x5e6cf2
mov ebx, dword [edi + 0x248]
cmp dword [ebx + 0x7c], 0
je 0x5e69c4
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 0x5e69c9
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 + 0x6d72b8]
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 0x5e6a37
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp byte [eax + ecx], 0
jne 0x5e6b05
cmp byte [ebx + 0xc0], 1
jbe 0x5e6b05
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 0x5e6b05
movzx ebp, al
mov ecx, dword [ebx + ebp*4 + 0xc4]
mov dword [esp + 0x34], ecx
cmp al, byte [esp + 0x12]
je 0x5e6ac3
mov eax, dword [esp + 0x14]
mov al, byte [ecx + eax]
test al, al
je 0x5e6abf
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 0x5e6ad9
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 0x5e6a72
jmp 0x5e6b05
mov edx, dword [esp + 0x38]
mov eax, dword [ecx*4 + 0x6d72b8]
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 0x5e6cf2
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5e6cff
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx + 0xc]
jge 0x5e6d0c
mov ebx, dword [esp + 0x24]
movsx ecx, word [ecx + 0x18]
add eax, ebx
mov ebx, dword [esp + 0x14]
cmp edx, ecx
jne 0x5e6b5a
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x20]
push eax
call fcn.00617370
add esp, 0xc
jmp 0x5e6b87
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.005e94c0
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x5e6b87
cmp dword [edi + 0x10c], 0x78
jle 0x5e6d0c
mov eax, dword [esp + 0x18]
sub dword [edi + 0xb8], ebx
add eax, ebx
cmp eax, dword [edi + 0x40]
mov dword [esp + 0x18], eax
jge 0x5e6946
jmp 0x5e6c6b
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 0x5e6c0a
cmp dword [esp + 0x2c], eax
jg 0x5e6082
mov ebx, dword [edi + 0x40]
cmp dword [esp + 0x2c], ebx
jge 0x5e6082
cmp dword [esp + 0x38], ebx
jge 0x5e6082
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x10
jle 0x5e6c6b
cmp ebx, 0x20
jle 0x5e6c4e
add ebx, 0xfffffff0
push ebx
lea edx, [edx + eax + 0x10]
push edx
add ecx, 0x10
push ecx
call fcn.00617370
add esp, 0xc
jmp 0x5e6c6b
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 0x5e60d5
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 0x5e6c7e
mov dword [edi], 7
mov dword [esp + 0x20], 2
jmp 0x5e6c7e
dec dword [esp + 0x14]
mov dword [edi], 0xd
jmp 0x5e6c7e
mov dword [edi], 8
mov dword [esp + 0x20], 2
jmp 0x5e6c7e
sub dword [esp + 0x14], ecx
mov dword [edi], 0xd
jmp 0x5e6c7e
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