Function at 0x5e88b0
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.005e85f0
cmp dword [esi + 0xc], 0x1c
mov dword [esp + 0x28], eax
jb 0x5e9552
push esi
call fcn.005e55f0
mov eax, dword [edi]
add esp, 4
cmp eax, 7
je 0x5e8965
cmp eax, 8
je 0x5e8c31
cmp eax, 9
je 0x5e8eff
cmp eax, 0xa
jne 0x5e95a9
mov ecx, dword [edi + 0x40]
mov ebp, dword [esp + 0x18]
mov edx, 1
sub ecx, ebp
sub dword [esp + 0x14], edx
js 0x5e8958
jmp 0x5e8930
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 0x5e9528
sub dword [esp + 0x14], edx
jns 0x5e8930
cmp dword [edi + 0xb8], 0
jle 0x5e9508
cmp dword [esi + 0xc], 0x1c
jb 0x5e9530
cmp dword [edi + 0xc4], 0
jne 0x5e8981
mov eax, edi
call fcn.005e7720
jmp 0x5e8965
mov ecx, dword [esi + 4]
mov eax, dword [edi + 0x68]
mov dword [esp + 0x2c], 0
cmp ecx, 0x10
jb 0x5e89ba
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 0x5e89f6
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d9378]
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 + 0x6d9c68]
mov edx, dword [eax*8 + 0x6d9c6c]
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 0x5e8b2d
movzx eax, bl
cmp eax, 0x10
mov eax, dword [esi + 4]
ja 0x5e8a9c
cmp eax, 0x10
jb 0x5e8a7a
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 + 0x6d9378]
and eax, ecx
mov ecx, dword [esi + 4]
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e8b29
cmp eax, 0x10
jb 0x5e8ac2
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 [0x6d93b8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e8b01
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 + 0x6d9338]
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 0x5e8b82
cmp eax, 0x10
jb 0x5e8b68
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 + 0x6d9378]
shr ebx, cl
and eax, ebx
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e8c08
cmp eax, 0x10
jb 0x5e8ba8
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 [0x6d93b8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e8be8
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 + 0x6d9338]
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 0x5e8eff
sub dword [edi + 0xb8], eax
cmp dword [edi + 0xb0], 0
je 0x5e8de7
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e8c6d
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 [0x6d9398]
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
cmp dword [esi + 0xc], 0x1c
jb 0x5e954c
cmp dword [edi + 0xc0], 0
jne 0x5e8cf3
mov eax, edi
call fcn.005e7160
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e8cce
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 [0x6d9398]
cmp dword [edi + 0xb0], 0
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
je 0x5e8de7
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
cmp edx, 8
jbe 0x5e8d70
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e8d32
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 + 0x6d9358]
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 0x5e8d73
add dword [esi + 4], edx
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e8d9c
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 [0x6d9398]
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 0x5e9540
sub dword [esp + 0x14], 1
jne 0x5e8c85
jmp 0x5e8ef2
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 0x5e954c
cmp dword [edi + 0xc0], 0
jne 0x5e8e2c
mov eax, edi
call fcn.005e7160
cmp dword [edi + 0xb0], 0
jne 0x5e8c3e
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 0x5e8e7f
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 0x5e8ebb
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d9378]
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 0x5e955c
sub dword [esp + 0x14], ecx
jne 0x5e8e05
cmp dword [edi + 0xb8], 0
jle 0x5e9508
mov eax, dword [edi + 0x10c]
test eax, eax
jl 0x5e8f2e
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 0x5e9159
cmp dword [edi + 0xc8], 0
jne 0x5e8f3e
mov eax, edi
call fcn.005e7c70
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 0x5e8f77
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 0x5e8fb3
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d9378]
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 0x5e9064
cmp edx, 3
mov dword [edi + 0x10c], edx
jg 0x5e9012
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 0x5e9159
cmp edx, 0xa
mov eax, 3
lea ecx, [edx - 0xa]
jge 0x5e9024
lea ecx, [edx - 4]
jmp 0x5e9029
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 0x5e9159
mov dword [edi + 0x10c], 0x7fffffff
jmp 0x5e9159
movzx ebx, byte [edx + edi + 0x270]
mov eax, dword [esi + 4]
mov dword [esp + 0x24], ebx
cmp ebx, 0x10
ja 0x5e90b9
cmp eax, 0x10
jb 0x5e90a2
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 + 0x6d9378]
shr ebp, cl
and eax, ebp
add ecx, ebx
jmp 0x5e913d
cmp eax, 0x10
jb 0x5e90df
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 [0x6d93b8]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e911c
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 + 0x6d9338]
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 0x5e916e
cmp ebx, eax
jge 0x5e916b
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 0x5e9435
cmp ecx, 0x7ffffffc
jg 0x5e9568
mov ebp, ecx
sub ebp, eax
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x28]
jge 0x5e91f6
sub eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x28]
push ecx
call fcn.005e8570
add esp, 4
test eax, eax
je 0x5e9575
push ebx
push edi
call fcn.005e8610
add ebx, eax
add esp, 8
cmp ebx, dword [edi + 0x40]
mov dword [esp + 0x18], ebx
jl 0x5e94fb
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 0x5e9582
mov ebx, dword [edi + 0x248]
cmp dword [ebx + 0x7c], 0
je 0x5e9254
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 0x5e9259
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 + 0x6d9378]
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 0x5e92c7
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp byte [eax + ecx], 0
jne 0x5e9395
cmp byte [ebx + 0xc0], 1
jbe 0x5e9395
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 0x5e9395
movzx ebp, al
mov ecx, dword [ebx + ebp*4 + 0xc4]
mov dword [esp + 0x34], ecx
cmp al, byte [esp + 0x12]
je 0x5e9353
mov eax, dword [esp + 0x14]
mov al, byte [ecx + eax]
test al, al
je 0x5e934f
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 0x5e9369
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 0x5e9302
jmp 0x5e9395
mov edx, dword [esp + 0x38]
mov eax, dword [ecx*4 + 0x6d9378]
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 0x5e9582
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5e958f
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx + 0xc]
jge 0x5e959c
mov ebx, dword [esp + 0x24]
movsx ecx, word [ecx + 0x18]
add eax, ebx
mov ebx, dword [esp + 0x14]
cmp edx, ecx
jne 0x5e93ea
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x20]
push eax
call fcn.00619c20
add esp, 0xc
jmp 0x5e9417
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.005ebd50
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x5e9417
cmp dword [edi + 0x10c], 0x78
jle 0x5e959c
mov eax, dword [esp + 0x18]
sub dword [edi + 0xb8], ebx
add eax, ebx
cmp eax, dword [edi + 0x40]
mov dword [esp + 0x18], eax
jge 0x5e91d6
jmp 0x5e94fb
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 0x5e949a
cmp dword [esp + 0x2c], eax
jg 0x5e8912
mov ebx, dword [edi + 0x40]
cmp dword [esp + 0x2c], ebx
jge 0x5e8912
cmp dword [esp + 0x38], ebx
jge 0x5e8912
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x10
jle 0x5e94fb
cmp ebx, 0x20
jle 0x5e94de
add ebx, 0xfffffff0
push ebx
lea edx, [edx + eax + 0x10]
push edx
add ecx, 0x10
push ecx
call fcn.00619c20
add esp, 0xc
jmp 0x5e94fb
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 0x5e8965
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 0x5e950e
mov dword [edi], 7
mov dword [esp + 0x20], 2
jmp 0x5e950e
dec dword [esp + 0x14]
mov dword [edi], 0xd
jmp 0x5e950e
mov dword [edi], 8
mov dword [esp + 0x20], 2
jmp 0x5e950e
sub dword [esp + 0x14], ecx
mov dword [edi], 0xd
jmp 0x5e950e
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