Function at 0x5e3c30
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.005e3970
cmp dword [esi + 0xc], 0x1c
mov dword [esp + 0x28], eax
jb 0x5e48d2
push esi
call fcn.005e0970
mov eax, dword [edi]
add esp, 4
cmp eax, 7
je 0x5e3ce5
cmp eax, 8
je 0x5e3fb1
cmp eax, 9
je 0x5e427f
cmp eax, 0xa
jne 0x5e4929
mov ecx, dword [edi + 0x40]
mov ebp, dword [esp + 0x18]
mov edx, 1
sub ecx, ebp
sub dword [esp + 0x14], edx
js 0x5e3cd8
jmp 0x5e3cb0
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 0x5e48a8
sub dword [esp + 0x14], edx
jns 0x5e3cb0
cmp dword [edi + 0xb8], 0
jle 0x5e4888
cmp dword [esi + 0xc], 0x1c
jb 0x5e48b0
cmp dword [edi + 0xc4], 0
jne 0x5e3d01
mov eax, edi
call fcn.005e2aa0
jmp 0x5e3ce5
mov ecx, dword [esi + 4]
mov eax, dword [edi + 0x68]
mov dword [esp + 0x2c], 0
cmp ecx, 0x10
jb 0x5e3d3a
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 0x5e3d76
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d3d38]
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 + 0x6d4628]
mov edx, dword [eax*8 + 0x6d462c]
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 0x5e3ead
movzx eax, bl
cmp eax, 0x10
mov eax, dword [esi + 4]
ja 0x5e3e1c
cmp eax, 0x10
jb 0x5e3dfa
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 + 0x6d3d38]
and eax, ecx
mov ecx, dword [esi + 4]
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e3ea9
cmp eax, 0x10
jb 0x5e3e42
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 [0x6d3d78]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e3e81
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 + 0x6d3cf8]
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 0x5e3f02
cmp eax, 0x10
jb 0x5e3ee8
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 + 0x6d3d38]
shr ebx, cl
and eax, ebx
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5e3f88
cmp eax, 0x10
jb 0x5e3f28
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 [0x6d3d78]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e3f68
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 + 0x6d3cf8]
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 0x5e427f
sub dword [edi + 0xb8], eax
cmp dword [edi + 0xb0], 0
je 0x5e4167
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e3fed
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 [0x6d3d58]
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
cmp dword [esi + 0xc], 0x1c
jb 0x5e48cc
cmp dword [edi + 0xc0], 0
jne 0x5e4073
mov eax, edi
call fcn.005e24e0
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5e404e
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 [0x6d3d58]
cmp dword [edi + 0xb0], 0
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
je 0x5e4167
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
cmp edx, 8
jbe 0x5e40f0
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e40b2
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 + 0x6d3d18]
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 0x5e40f3
add dword [esi + 4], edx
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5e411c
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 [0x6d3d58]
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 0x5e48c0
sub dword [esp + 0x14], 1
jne 0x5e4005
jmp 0x5e4272
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 0x5e48cc
cmp dword [edi + 0xc0], 0
jne 0x5e41ac
mov eax, edi
call fcn.005e24e0
cmp dword [edi + 0xb0], 0
jne 0x5e3fbe
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 0x5e41ff
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 0x5e423b
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d3d38]
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 0x5e48dc
sub dword [esp + 0x14], ecx
jne 0x5e4185
cmp dword [edi + 0xb8], 0
jle 0x5e4888
mov eax, dword [edi + 0x10c]
test eax, eax
jl 0x5e42ae
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 0x5e44d9
cmp dword [edi + 0xc8], 0
jne 0x5e42be
mov eax, edi
call fcn.005e2ff0
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 0x5e42f7
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 0x5e4333
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6d3d38]
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 0x5e43e4
cmp edx, 3
mov dword [edi + 0x10c], edx
jg 0x5e4392
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 0x5e44d9
cmp edx, 0xa
mov eax, 3
lea ecx, [edx - 0xa]
jge 0x5e43a4
lea ecx, [edx - 4]
jmp 0x5e43a9
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 0x5e44d9
mov dword [edi + 0x10c], 0x7fffffff
jmp 0x5e44d9
movzx ebx, byte [edx + edi + 0x270]
mov eax, dword [esi + 4]
mov dword [esp + 0x24], ebx
cmp ebx, 0x10
ja 0x5e4439
cmp eax, 0x10
jb 0x5e4422
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 + 0x6d3d38]
shr ebp, cl
and eax, ebp
add ecx, ebx
jmp 0x5e44bd
cmp eax, 0x10
jb 0x5e445f
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 [0x6d3d78]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5e449c
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 + 0x6d3cf8]
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 0x5e44ee
cmp ebx, eax
jge 0x5e44eb
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 0x5e47b5
cmp ecx, 0x7ffffffc
jg 0x5e48e8
mov ebp, ecx
sub ebp, eax
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x28]
jge 0x5e4576
sub eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x28]
push ecx
call fcn.005e38f0
add esp, 4
test eax, eax
je 0x5e48f5
push ebx
push edi
call fcn.005e3990
add ebx, eax
add esp, 8
cmp ebx, dword [edi + 0x40]
mov dword [esp + 0x18], ebx
jl 0x5e487b
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 0x5e4902
mov ebx, dword [edi + 0x248]
cmp dword [ebx + 0x7c], 0
je 0x5e45d4
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 0x5e45d9
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 + 0x6d3d38]
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 0x5e4647
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp byte [eax + ecx], 0
jne 0x5e4715
cmp byte [ebx + 0xc0], 1
jbe 0x5e4715
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 0x5e4715
movzx ebp, al
mov ecx, dword [ebx + ebp*4 + 0xc4]
mov dword [esp + 0x34], ecx
cmp al, byte [esp + 0x12]
je 0x5e46d3
mov eax, dword [esp + 0x14]
mov al, byte [ecx + eax]
test al, al
je 0x5e46cf
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 0x5e46e9
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 0x5e4682
jmp 0x5e4715
mov edx, dword [esp + 0x38]
mov eax, dword [ecx*4 + 0x6d3d38]
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 0x5e4902
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5e490f
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx + 0xc]
jge 0x5e491c
mov ebx, dword [esp + 0x24]
movsx ecx, word [ecx + 0x18]
add eax, ebx
mov ebx, dword [esp + 0x14]
cmp edx, ecx
jne 0x5e476a
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x20]
push eax
call fcn.00614de0
add esp, 0xc
jmp 0x5e4797
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.005e70c0
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x5e4797
cmp dword [edi + 0x10c], 0x78
jle 0x5e491c
mov eax, dword [esp + 0x18]
sub dword [edi + 0xb8], ebx
add eax, ebx
cmp eax, dword [edi + 0x40]
mov dword [esp + 0x18], eax
jge 0x5e4556
jmp 0x5e487b
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 0x5e481a
cmp dword [esp + 0x2c], eax
jg 0x5e3c92
mov ebx, dword [edi + 0x40]
cmp dword [esp + 0x2c], ebx
jge 0x5e3c92
cmp dword [esp + 0x38], ebx
jge 0x5e3c92
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x10
jle 0x5e487b
cmp ebx, 0x20
jle 0x5e485e
add ebx, 0xfffffff0
push ebx
lea edx, [edx + eax + 0x10]
push edx
add ecx, 0x10
push ecx
call fcn.00614de0
add esp, 0xc
jmp 0x5e487b
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 0x5e3ce5
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 0x5e488e
mov dword [edi], 7
mov dword [esp + 0x20], 2
jmp 0x5e488e
dec dword [esp + 0x14]
mov dword [edi], 0xd
jmp 0x5e488e
mov dword [edi], 8
mov dword [esp + 0x20], 2
jmp 0x5e488e
sub dword [esp + 0x14], ecx
mov dword [edi], 0xd
jmp 0x5e488e
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