Function at 0x5f13c0
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.005f1100
cmp dword [esi + 0xc], 0x1c
mov dword [esp + 0x28], eax
jb 0x5f2062
push esi
call fcn.005ee100
mov eax, dword [edi]
add esp, 4
cmp eax, 7
je 0x5f1475
cmp eax, 8
je 0x5f1741
cmp eax, 9
je 0x5f1a0f
cmp eax, 0xa
jne 0x5f20b9
mov ecx, dword [edi + 0x40]
mov ebp, dword [esp + 0x18]
mov edx, 1
sub ecx, ebp
sub dword [esp + 0x14], edx
js 0x5f1468
jmp 0x5f1440
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 0x5f2038
sub dword [esp + 0x14], edx
jns 0x5f1440
cmp dword [edi + 0xb8], 0
jle 0x5f2018
cmp dword [esi + 0xc], 0x1c
jb 0x5f2040
cmp dword [edi + 0xc4], 0
jne 0x5f1491
mov eax, edi
call fcn.005f0230
jmp 0x5f1475
mov ecx, dword [esi + 4]
mov eax, dword [edi + 0x68]
mov dword [esp + 0x2c], 0
cmp ecx, 0x10
jb 0x5f14ca
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 0x5f1506
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e28c0]
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 + 0x6e31b0]
mov edx, dword [eax*8 + 0x6e31b4]
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 0x5f163d
movzx eax, bl
cmp eax, 0x10
mov eax, dword [esi + 4]
ja 0x5f15ac
cmp eax, 0x10
jb 0x5f158a
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 + 0x6e28c0]
and eax, ecx
mov ecx, dword [esi + 4]
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5f1639
cmp eax, 0x10
jb 0x5f15d2
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 [0x6e2900]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f1611
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 + 0x6e2880]
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 0x5f1692
cmp eax, 0x10
jb 0x5f1678
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 + 0x6e28c0]
shr ebx, cl
and eax, ebx
add ebp, ecx
mov dword [esi + 4], ebp
jmp 0x5f1718
cmp eax, 0x10
jb 0x5f16b8
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 [0x6e2900]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f16f8
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 + 0x6e2880]
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 0x5f1a0f
sub dword [edi + 0xb8], eax
cmp dword [edi + 0xb0], 0
je 0x5f18f7
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5f177d
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 [0x6e28e0]
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
cmp dword [esi + 0xc], 0x1c
jb 0x5f205c
cmp dword [edi + 0xc0], 0
jne 0x5f1803
mov eax, edi
call fcn.005efc70
mov eax, dword [esi + 4]
mov edx, dword [edi + 0x100]
cmp eax, 0x10
jb 0x5f17de
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 [0x6e28e0]
cmp dword [edi + 0xb0], 0
movzx ebp, word [edx + eax*4 + 2]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
je 0x5f18f7
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
cmp edx, 8
jbe 0x5f1880
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5f1842
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 + 0x6e28a0]
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 0x5f1883
add dword [esi + 4], edx
mov eax, dword [esi + 4]
cmp eax, 0x10
jb 0x5f18ac
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 [0x6e28e0]
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 0x5f2050
sub dword [esp + 0x14], 1
jne 0x5f1795
jmp 0x5f1a02
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 0x5f205c
cmp dword [edi + 0xc0], 0
jne 0x5f193c
mov eax, edi
call fcn.005efc70
cmp dword [edi + 0xb0], 0
jne 0x5f174e
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 0x5f198f
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 0x5f19cb
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e28c0]
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 0x5f206c
sub dword [esp + 0x14], ecx
jne 0x5f1915
cmp dword [edi + 0xb8], 0
jle 0x5f2018
mov eax, dword [edi + 0x10c]
test eax, eax
jl 0x5f1a3e
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 0x5f1c69
cmp dword [edi + 0xc8], 0
jne 0x5f1a4e
mov eax, edi
call fcn.005f0780
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 0x5f1a87
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 0x5f1ac3
movzx ebx, cl
add ebp, 8
sub ebx, 8
mov dword [esi + 4], ebp
mov ecx, dword [ebx*4 + 0x6e28c0]
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 0x5f1b74
cmp edx, 3
mov dword [edi + 0x10c], edx
jg 0x5f1b22
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 0x5f1c69
cmp edx, 0xa
mov eax, 3
lea ecx, [edx - 0xa]
jge 0x5f1b34
lea ecx, [edx - 4]
jmp 0x5f1b39
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 0x5f1c69
mov dword [edi + 0x10c], 0x7fffffff
jmp 0x5f1c69
movzx ebx, byte [edx + edi + 0x270]
mov eax, dword [esi + 4]
mov dword [esp + 0x24], ebx
cmp ebx, 0x10
ja 0x5f1bc9
cmp eax, 0x10
jb 0x5f1bb2
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 + 0x6e28c0]
shr ebp, cl
and eax, ebp
add ecx, ebx
jmp 0x5f1c4d
cmp eax, 0x10
jb 0x5f1bef
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 [0x6e2900]
mov dword [esi + 4], eax
cmp eax, 0x10
jb 0x5f1c2c
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 + 0x6e2880]
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 0x5f1c7e
cmp ebx, eax
jge 0x5f1c7b
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 0x5f1f45
cmp ecx, 0x7ffffffc
jg 0x5f2078
mov ebp, ecx
sub ebp, eax
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x28]
jge 0x5f1d06
sub eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x28]
push ecx
call fcn.005f1080
add esp, 4
test eax, eax
je 0x5f2085
push ebx
push edi
call fcn.005f1120
add ebx, eax
add esp, 8
cmp ebx, dword [edi + 0x40]
mov dword [esp + 0x18], ebx
jl 0x5f200b
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 0x5f2092
mov ebx, dword [edi + 0x248]
cmp dword [ebx + 0x7c], 0
je 0x5f1d64
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 0x5f1d69
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 + 0x6e28c0]
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 0x5f1dd7
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp byte [eax + ecx], 0
jne 0x5f1ea5
cmp byte [ebx + 0xc0], 1
jbe 0x5f1ea5
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 0x5f1ea5
movzx ebp, al
mov ecx, dword [ebx + ebp*4 + 0xc4]
mov dword [esp + 0x34], ecx
cmp al, byte [esp + 0x12]
je 0x5f1e63
mov eax, dword [esp + 0x14]
mov al, byte [ecx + eax]
test al, al
je 0x5f1e5f
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 0x5f1e79
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 0x5f1e12
jmp 0x5f1ea5
mov edx, dword [esp + 0x38]
mov eax, dword [ecx*4 + 0x6e28c0]
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 0x5f2092
mov eax, dword [eax + 0xa4]
test eax, eax
je 0x5f209f
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx + 0xc]
jge 0x5f20ac
mov ebx, dword [esp + 0x24]
movsx ecx, word [ecx + 0x18]
add eax, ebx
mov ebx, dword [esp + 0x14]
cmp edx, ecx
jne 0x5f1efa
mov edx, ebx
push edx
push eax
mov eax, dword [edi + 0x60]
add eax, dword [esp + 0x20]
push eax
call fcn.00622730
add esp, 0xc
jmp 0x5f1f27
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.005f4860
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x5f1f27
cmp dword [edi + 0x10c], 0x78
jle 0x5f20ac
mov eax, dword [esp + 0x18]
sub dword [edi + 0xb8], ebx
add eax, ebx
cmp eax, dword [edi + 0x40]
mov dword [esp + 0x18], eax
jge 0x5f1ce6
jmp 0x5f200b
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 0x5f1faa
cmp dword [esp + 0x2c], eax
jg 0x5f1422
mov ebx, dword [edi + 0x40]
cmp dword [esp + 0x2c], ebx
jge 0x5f1422
cmp dword [esp + 0x38], ebx
jge 0x5f1422
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
cmp ebx, 0x10
jle 0x5f200b
cmp ebx, 0x20
jle 0x5f1fee
add ebx, 0xfffffff0
push ebx
lea edx, [edx + eax + 0x10]
push edx
add ecx, 0x10
push ecx
call fcn.00622730
add esp, 0xc
jmp 0x5f200b
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 0x5f1475
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 0x5f201e
mov dword [edi], 7
mov dword [esp + 0x20], 2
jmp 0x5f201e
dec dword [esp + 0x14]
mov dword [edi], 0xd
jmp 0x5f201e
mov dword [edi], 8
mov dword [esp + 0x20], 2
jmp 0x5f201e
sub dword [esp + 0x14], ecx
mov dword [edi], 0xd
jmp 0x5f201e
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