Function at 0x5e79b0
Capabilities:
Encode data using xor
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
mov dword [ecx + 0x5c], eax
sub eax, 1
je 0x5e2fe1
sub eax, 1
je 0x5e2fdb
sub eax, 1
je 0x5e2fd5
xor eax, eax
ret
mov eax, 3
ret
mov eax, 2
ret
mov eax, 1
ret
sub esp, 0x10
mov eax, dword [esp + 0x28]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x20]
mov ebx, 1
mov dword [esp + 0xc], ebx
lea ebp, [esi + 8]
test eax, eax
je 0x5e79d6
mov ecx, dword [esi + 0x114]
mov dword [eax], ecx
cmp dword [esi + 0x5c], 0
jge 0x5e79e5
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
cmp dword [edx], 0
je 0x5e7a0d
mov eax, dword [esp + 0x30]
test eax, eax
je 0x5e79fb
cmp dword [eax], 0
jne 0x5e7a15
mov ecx, esi
pop esi
pop ebp
mov eax, 0xffffffec
pop ebx
add esp, 0x10
jmp 0x5e2fc0
mov dword [esp + 0x30], 0
cmp dword [esi + 0x30], 0
jne 0x5e7a2f
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov edx, dword [esp + 0x28]
mov dword [ebp + 0xc], ecx
mov eax, dword [edx]
mov dword [ebp + 8], eax
jmp 0x5e7a3e
mov ebx, 2
lea ecx, [esi + 0x28]
mov dword [esp + 0xc], ebx
mov dword [ebp + 8], ecx
push edi
nop
cmp ebx, 1
je 0x5e7ae2
cmp ebx, 2
jne 0x5e8639
cmp dword [esi + 0x60], 0
je 0x5e7a79
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
push 1
push edx
push eax
push ecx
call fcn.005e5980
add esp, 0x10
test eax, eax
jl 0x5e85e8
mov ecx, dword [esi + 0x30]
test ecx, ecx
je 0x5e85f8
cmp dword [ebp + 0xc], 0
jne 0x5e7aae
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x30], 0
mov eax, dword [edx]
mov dword [ebp + 0xc], eax
mov edx, dword [ecx]
mov ebx, 1
mov dword [esp + 0x10], ebx
mov dword [ebp + 8], edx
jmp case.default.0x5e7aed
mov edi, dword [esp + 0x28]
cmp dword [edi], 0
je 0x5e8698
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov dl, byte [edx]
mov byte [ecx + esi + 0x28], dl
inc dword [esi + 0x30]
mov ecx, dword [esi + 0x30]
mov dword [ebp + 0xc], ecx
inc dword [eax]
dec dword [edi]
mov ebx, 1
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov eax, dword [esi]
cmp eax, 0x1a
ja case.default.0x5e7aed
jmp dword [eax*4 + 0x5e86d0]
push ebp
call fcn.005e2d60
add esp, 4
test eax, eax
jne 0x5e7b0f
mov ebx, 2
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov edx, ebp
mov ebx, esi
call fcn.005e2ff0
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov al, byte [esi + 0x230]
and al, 0x20
movzx ecx, al
neg ecx
sbb ecx, ecx
add ecx, 2
mov dword [esi], ecx
jmp case.default.0x5e7aed
mov edx, 0x20
sub edx, dword [ebp + 4]
cmp edx, 6
jae 0x5e7b86
mov edi, 0xfffffff8
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x5e7b01
shr dword [ebp], 8
mov eax, dword [ebp + 8]
movzx ebx, byte [eax]
mov ecx, dword [ebp]
add dword [ebp + 4], edi
inc eax
shl ebx, 0x18
or ebx, ecx
dec edx
mov dword [ebp + 8], eax
mov eax, 0x20
mov dword [ebp], ebx
mov dword [ebp + 0xc], edx
sub eax, dword [ebp + 4]
cmp eax, 6
jb 0x5e7b52
mov ecx, dword [ebp + 4]
mov edx, dword [ebp]
shr edx, cl
and edx, dword [0x6d72d0]
mov dword [esi + 0x234], edx
add dword [ebp + 4], 6
mov eax, dword [esi + 0x234]
cmp eax, 0xa
jb 0x5e7bf0
cmp eax, 0x1e
ja 0x5e7bf0
mov dword [esi], 2
mov ecx, dword [esi + 0x234]
mov edx, dword [esi + 0x18]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x20]
push 0x3030
push ecx
sub eax, 0x10
mov dword [esi + 0x38], eax
call edx
add esp, 8
mov dword [esi + 0xa8], eax
test eax, eax
jne 0x5e7bfe
mov ebx, 0xffffffe2
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov ebx, 0xfffffff3
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
add eax, 0x1da0
mov dword [esi + 0xac], eax
mov dword [esi], 3
push esi
call fcn.005e90e0
add esp, 4
mov dword [esi], 4
mov edx, ebp
call fcn.005e3290
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
test byte [esi + 0x230], 6
je 0x5e7c6d
mov ecx, dword [ebp + 4]
mov eax, ecx
neg eax
and eax, 7
je 0x5e7c6d
mov edx, dword [ebp]
mov edi, dword [eax*4 + 0x6d72b8]
shr edx, cl
lea ecx, [ecx + eax]
mov dword [ebp + 4], ecx
and edi, edx
je 0x5e7c6d
mov ebx, 0xfffffff2
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
test byte [esi + 0x230], 4
je 0x5e7c81
mov dword [esi], 0xc
jmp case.default.0x5e7aed
cmp dword [esi + 0xb8], 0
jne 0x5e7c95
mov dword [esi], 0xe
jmp case.default.0x5e7aed
call fcn.005e5e30
test byte [esi + 0x230], 2
je 0x5e7cae
mov dword [esi], 0xb
jmp case.default.0x5e7aed
mov dword [esi], 0x11
xor eax, eax
mov dword [esi + 4], eax
lea ecx, [esi + 0x338]
mov dword [esi + 0x27c], eax
mov dword [esi + 0x314], ecx
mov dword [esi + 0x278], eax
mov dword [esi + 0x270], eax
mov dword [esi + 0x274], eax
mov dword [esi], 0x12
mov eax, dword [esi + 4]
cmp eax, 3
jl 0x5e7cf6
mov dword [esi], 5
jmp case.default.0x5e7aed
lea edx, [esi + eax*4 + 0xcc]
push edx
push esi
mov eax, ebp
call fcn.005e30d0
mov ebx, eax
add esp, 8
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov eax, dword [esi + 4]
inc dword [esi + eax*4 + 0xcc]
lea eax, [esi + eax*4 + 0xcc]
mov eax, dword [esi + 4]
cmp dword [esi + eax*4 + 0xcc], 2
jae 0x5e7d3f
inc eax
mov dword [esi + 4], eax
jmp case.default.0x5e7aed
mov dword [esi], 0x13
mov eax, dword [esi + 4]
mov ecx, dword [esi + eax*4 + 0xcc]
imul eax, eax, 0x278
mov edx, dword [esi + 0xa8]
push 0
lea eax, [edx + eax*4]
push eax
add ecx, 2
push ecx
push ecx
mov eax, esi
call fcn.005e4000
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov dword [esi], 0x14
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0xac]
imul eax, eax, 0x18c
push 0
lea edx, [ecx + eax*4]
push edx
push 0x1a
push 0x1a
mov eax, esi
call fcn.005e4000
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov dword [esi], 0x15
mov edx, dword [esi + 4]
mov dword [esp + 0x1c], edx
imul edx, edx, 0x630
add edx, dword [esi + 0xac]
cmp dword [esi + 0x22c], 0
mov dword [esp + 0x14], edx
jne 0x5e7e9c
mov eax, 0x20
sub eax, dword [ebp + 4]
cmp eax, 0xf
jae 0x5e7e2d
mov edi, edi
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x5e7e83
shr dword [ebp], 8
mov eax, dword [ebp + 8]
movzx edx, byte [eax]
mov ecx, dword [ebp]
add dword [ebp + 4], 0xfffffff8
inc eax
shl edx, 0x18
or edx, ecx
dec edi
mov dword [ebp + 8], eax
mov dword [ebp], edx
mov edx, dword [esp + 0x14]
mov eax, 0x20
mov dword [ebp + 0xc], edi
sub eax, dword [ebp + 4]
cmp eax, 0xf
jb 0x5e7df0
mov ecx, dword [ebp + 4]
mov eax, dword [ebp]
shr eax, cl
and eax, dword [0x6d72f4]
mov edi, eax
and edi, 0xff
mov bl, byte [edx + edi*4]
lea edx, [edx + edi*4]
cmp bl, 8
jbe 0x5e7e6f
movzx edi, bl
add ecx, 8
mov dword [ebp + 4], ecx
mov ecx, dword [edi*4 + 0x6d7298]
sub edi, 8
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 [ebp + 4], ecx
movzx edx, word [edx + 2]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
jmp 0x5e7ea6
lea eax, [esp + 0x24]
push eax
mov edi, ebp
call fcn.005e3820
add esp, 4
test eax, eax
je 0x5e7b01
jmp 0x5e7ea6
mov ecx, dword [esi + 0xbc]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x24]
movzx edx, byte [eax*4 + 0x6d7342]
movzx eax, word [eax*4 + 0x6d7340]
mov ecx, 0x20
sub ecx, dword [ebp + 4]
mov dword [esp + 0x18], eax
cmp ecx, edx
jae 0x5e7f08
lea ebx, [ebx]
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x5e7f47
shr dword [ebp], 8
mov eax, dword [ebp + 8]
movzx ebx, byte [eax]
mov ecx, dword [ebp]
add dword [ebp + 4], 0xfffffff8
inc eax
shl ebx, 0x18
or ebx, ecx
dec edi
mov dword [ebp + 8], eax
mov eax, 0x20
mov dword [ebp], ebx
mov dword [ebp + 0xc], edi
sub eax, dword [ebp + 4]
cmp eax, edx
jb 0x5e7ed0
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebp + 4]
mov edi, dword [ebp]
mov eax, dword [edx*4 + 0x6d72b8]
shr edi, cl
add ecx, edx
mov edx, dword [esp + 0x18]
mov dword [ebp + 4], ecx
mov ecx, dword [esp + 0x1c]
and eax, edi
add eax, edx
mov dword [esi + ecx*4 + 0xc0], eax
inc dword [esi + 4]
mov dword [esi + 0x22c], 0
mov dword [esi], 0x12
jmp case.default.0x5e7aed
mov ecx, dword [esp + 0x24]
mov ebx, 2
mov dword [esi + 0xbc], ecx
mov dword [esi + 0x22c], 1
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
push edx
push eax
push ecx
mov eax, esi
call fcn.005e5b30
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov dword [esi], 0xe
jmp case.default.0x5e7aed
cmp dword [esi + 0xb8], 0
jle 0x5e7c8a
lea esp, [esp]
mov edx, 0x20
sub edx, dword [ebp + 4]
cmp edx, 8
jae 0x5e7ff9
lea ecx, [ecx]
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x5e7b01
shr dword [ebp], 8
mov eax, dword [ebp + 8]
movzx edi, byte [eax]
mov ecx, dword [ebp]
add dword [ebp + 4], 0xfffffff8
inc eax
shl edi, 0x18
or edi, ecx
dec edx
mov dword [ebp + 8], eax
mov eax, 0x20
mov dword [ebp], edi
mov dword [ebp + 0xc], edx
sub eax, dword [ebp + 4]
cmp eax, 8
jb 0x5e7fc0
add dword [ebp + 4], 8
dec dword [esi + 0xb8]
cmp dword [esi + 0xb8], 0
jg 0x5e7fb0
mov dword [esi], 0xe
jmp case.default.0x5e7aed
mov ecx, 0x20
sub ecx, dword [ebp + 4]
cmp ecx, 6
jae 0x5e8068
mov edi, 0xfffffff8
lea esp, [esp]
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x5e7b01
shr dword [ebp], 8
mov eax, dword [ebp + 8]
movzx ebx, byte [eax]
mov ecx, dword [ebp]
add dword [ebp + 4], edi
dec edx
shl ebx, 0x18
or ebx, ecx
mov dword [ebp + 0xc], edx
inc eax
mov edx, 0x20
mov dword [ebp], ebx
mov dword [ebp + 8], eax
sub edx, dword [ebp + 4]
cmp edx, 6
jb 0x5e8030
mov ecx, dword [ebp + 4]
mov eax, dword [ebp]
shr eax, cl
add ecx, 6
and eax, dword [0x6d72d0]
mov dword [ebp + 4], ecx
mov ecx, dword [0x6d72c0]
mov edx, dword [esi + 0xcc]
and ecx, eax
shr eax, 2
shl eax, cl
push edx
mov dword [esi + 0xf0], ecx
mov ecx, dword [esi + 0x18]
mov dword [esi + 0xf4], eax
mov eax, dword [esi + 0x20]
push eax
call ecx
add esp, 8
mov dword [esi + 0x244], eax
test eax, eax
jne 0x5e80c0
mov ebx, 0xffffffeb
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov dword [esi + 4], 0
mov dword [esi], 6
mov eax, esi
call fcn.005e5ea0
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov dword [esi], 0x16
mov edx, dword [esi + 0xcc]
lea eax, [esi + 0x240]
push esi
push eax
shl edx, 6
lea eax, [esi + 0x23c]
push edx
call fcn.005e44a0
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
xor eax, eax
mov dword [esi + 0x250], eax
mov dword [esi + 0x254], eax
mov dword [esi + 0x258], eax
mov dword [esi + 0x25c], eax
mov dword [esi + 0x260], eax
mov dword [esi + 0x264], eax
mov dword [esi + 0x268], eax
mov dword [esi + 0x26c], eax
mov dword [esp + 0x10], eax
cmp dword [esi + 0xcc], eax
jbe 0x5e81ce
jmp 0x5e8160
mov ecx, dword [esi + 0x240]
shl eax, 6
movzx edi, byte [eax + ecx]
add eax, ecx
xor edx, edx
xor ecx, ecx
movzx ebx, byte [eax]
xor ebx, edi
or edx, ebx
movzx ebx, byte [eax + 1]
inc eax
xor ebx, edi
or edx, ebx
movzx ebx, byte [eax + 1]
inc eax
xor ebx, edi
inc ecx
or edx, ebx
movzx ebx, byte [eax + 1]
inc eax
inc ecx
inc ecx
xor ebx, edi
inc ecx
or edx, ebx
inc eax
cmp ecx, 0x40
jb 0x5e8173
mov eax, dword [esp + 0x10]
test edx, edx
jne 0x5e81c1
mov ecx, eax
and ecx, 0x1f
mov edi, 1
mov edx, eax
shr edx, 5
shl edi, cl
lea edx, [esi + edx*4 + 0x250]
or dword [edx], edi
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [esi + 0xcc]
jb 0x5e8160
mov dword [esi], 0x17
mov edi, dword [esi + 0xf0]
mov ebx, dword [esi + 0xf4]
lea ecx, [edi + 1]
mov eax, 0x18
shl eax, cl
test byte [esi + 0x230], 0x20
mov dword [esp + 0x1c], ecx
lea eax, [eax + ebx + 0x10]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
je 0x5e8282
cmp ebx, 0x7ffffffc
jb 0x5e8212
mov eax, 0x8000000c
jmp 0x5e826b
mov ecx, edi
mov eax, 0x7ffffffc
sub eax, ebx
shr eax, cl
mov edx, 1
shl edx, cl
mov dword [esp + 0x14], 0
mov ebx, dword [esp + 0x14]
add eax, 4
mov ecx, eax
dec edx
shr ecx, 1
je 0x5e8245
lea ebx, [ebx]
inc ebx
shr ecx, 1
jne 0x5e8240
dec ebx
mov ecx, ebx
shr eax, cl
lea ecx, [ebx + ebx - 2]
mov ebx, dword [esi + 0xf4]
and eax, 1
or eax, ecx
jne 0x5e8260
lea eax, [ebx + 0x10]
jmp 0x5e826b
dec eax
mov ecx, edi
shl eax, cl
or eax, edx
lea eax, [eax + ebx + 0x11]
mov ecx, dword [esp + 0x1c]
mov edx, 0x3e
shl edx, cl
mov dword [esp + 0x14], eax
lea ecx, [edx + ebx + 0x10]
mov dword [esp + 0x18], ecx
mov ecx, dword [esi + 0xd4]
push esi
lea edx, [esi + 0xfc]
add ecx, ecx
push edx
add ecx, ecx
lea eax, [esi + 0xf8]
push ecx
call fcn.005e44a0
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
mov edx, dword [esi + 0x23c]
push edx
push pe_nt_image_headers32
push pe_nt_image_headers32
lea eax, [esi + 0x78]
push eax
push esi
call fcn.005e9290
mov ecx, dword [esi + 0xd0]
push ecx
push 0x2c0
push 0x2c0
lea edx, [esi + 0x88]
push edx
mov edi, eax
push esi
and edi, ebx
call fcn.005e9290
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
and edi, eax
mov eax, dword [esi + 0xf8]
push eax
push ecx
push edx
lea eax, [esi + 0x98]
push eax
push esi
call fcn.005e9290
add esp, 0x3c
test edi, eax
je 0x5e86a8
mov dword [esi + 4], 0
mov dword [esi], 0x18
mov eax, dword [esi + 4]
sub eax, 0
je 0x5e834d
sub eax, 1
je 0x5e8345
sub eax, 1
jne 0x5e86bb
lea edi, [esi + 0x98]
jmp 0x5e8350
lea edi, [esi + 0x88]
jmp 0x5e8350
lea edi, [esi + 0x78]
call fcn.005e43f0
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
inc dword [esi + 4]
cmp dword [esi + 4], 3
jl case.default.0x5e7aed
mov dword [esi], 0x19
mov eax, dword [esi + 0xdc]
mov edx, dword [esi + 0x240]
mov ecx, eax
shl ecx, 6
add edx, ecx
mov edi, eax
mov dword [esi + 0x70], edx
mov ecx, eax
shr edi, 5
mov edi, dword [esi + edi*4 + 0x250]
and ecx, 0x1f
shr edi, cl
and edi, 1
mov dword [esi + 0xb0], edi
movzx ecx, byte [edx]
mov edx, dword [esi + 0x78]
mov ecx, dword [edx + ecx*4]
mov edx, dword [esi + 0x244]
mov dword [esi + 0x100], ecx
movzx eax, byte [edx + eax]
mov ecx, dword [esi + 0xfc]
mov edx, dword [esi + 0x88]
and eax, 3
shl eax, 9
add eax, 0x6d73a8
mov dword [esi + 0x6c], eax
mov dword [esi + 0x74], ecx
mov eax, dword [edx]
mov dword [esi + 0x68], eax
call fcn.005e5aa0
test eax, eax
jne 0x5e83fb
mov ebx, 0xffffffe5
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov eax, esi
call fcn.005e5f40
mov dword [esi], 7
mov eax, esi
call fcn.005e6020
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp ebx, 2
jne case.default.0x5e7aed
mov eax, esi
call fcn.005e6d30
mov ebx, eax
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push 0
push ecx
push edx
push eax
call fcn.005e5980
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
call fcn.005e5a70
mov ecx, dword [esi + 0x234]
mov edx, ebx
shl edx, cl
cmp dword [esi + 0x40], edx
jne 0x5e8472
mov eax, dword [esi + 0x38]
mov dword [esi + 0x3c], eax
mov eax, dword [esi]
cmp eax, 0xf
jne 0x5e84be
mov eax, dword [esi + 0x24c]
test eax, eax
je 0x5e84a7
mov ecx, dword [eax + 0x10]
cmp ecx, dword [eax + 0x14]
je 0x5e84a7
mov edx, dword [esi + 0x34]
push edx
push esi
call fcn.005e5d80
add dword [esi + 0x34], eax
mov eax, dword [esi + 0x34]
add esp, 8
cmp eax, dword [esi + 0x40]
jge case.default.0x5e7aed
mov eax, dword [esi + 0xb8]
neg eax
sbb eax, eax
and eax, 0xfffffff9
add eax, 0xe
mov dword [esi], eax
jmp case.default.0x5e7aed
cmp eax, 0x10
jne 0x5e84ce
mov dword [esi], 0xa
jmp case.default.0x5e7aed
cmp dword [esi + 4], 0
jne 0x5e84eb
mov ecx, dword [esi + 0xb8]
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffb
add ecx, 0xe
mov dword [esi], ecx
jmp case.default.0x5e7aed
mov dword [esi], 8
jmp case.default.0x5e7aed
cmp dword [esi + 0xb8], 0
jge 0x5e850d
mov ebx, 0xfffffff6
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
push esi
call fcn.005e9190
add esp, 4
test byte [esi + 0x230], 1
jne 0x5e852a
mov dword [esi], 3
jmp case.default.0x5e7aed
mov ecx, dword [ebp + 4]
mov eax, ecx
neg eax
and eax, 7
je 0x5e855a
mov edx, dword [ebp]
mov edi, dword [eax*4 + 0x6d72b8]
shr edx, cl
lea eax, [eax + ecx]
mov dword [ebp + 4], eax
and edi, edx
je 0x5e855a
mov ebx, 0xfffffff1
mov dword [esp + 0x10], ebx
jmp case.default.0x5e7aed
cmp dword [esi + 0x30], 0
jne 0x5e85a2
mov edx, dword [ebp + 4]
mov eax, 0x20
sub eax, edx
shr eax, 3
add dword [ebp + 0xc], eax
sub dword [ebp + 8], eax
mov edi, dword [ebp + 0xc]
lea ecx, [eax*8]
cmp ecx, 0x20
jne 0x5e858b
mov dword [ebp], 0
jmp 0x5e858e
shl dword [ebp], cl
mov eax, dword [esp + 0x28]
add ecx, edx
mov edx, dword [esp + 0x2c]
mov dword [ebp + 4], ecx
mov dword [eax], edi
mov ecx, dword [ebp + 8]
mov dword [edx], ecx
mov dword [esi], 0x1a
cmp dword [esi + 0x60], 0
je 0x5e8698
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push 1
push eax
push ecx
push edx
call fcn.005e5980
mov ebx, eax
add esp, 0x10
mov dword [esp + 0x10], ebx
cmp ebx, 1
jne 0x5e7a49
pop edi
mov ecx, esi
pop esi
pop ebp
pop ebx
add esp, 0x10
jmp 0x5e2fc0
pop edi
mov ecx, esi
pop esi
pop ebp
mov ebx, eax
pop ebx
add esp, 0x10
jmp 0x5e2fc0
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov dword [eax], ecx
mov ebp, dword [ebp + 0xc]
mov dword [edi], ebp
test ebp, ebp
je 0x5e8698
mov edx, dword [eax]
mov ecx, dword [esi + 0x30]
mov dl, byte [edx]
mov byte [ecx + esi + 0x28], dl
inc dword [esi + 0x30]
inc dword [eax]
dec dword [edi]
cmp dword [edi], 0
jne 0x5e8612
pop edi
mov ecx, esi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x10
jmp 0x5e2fc0
cmp dword [esi + 0x30], 0
je 0x5e8656
pop edi
mov dword [esi + 0x30], 0
mov ecx, esi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x10
jmp 0x5e2fc0
mov edx, dword [ebp + 4]
mov eax, 0x20
sub eax, edx
shr eax, 3
add dword [ebp + 0xc], eax
sub dword [ebp + 8], eax
mov edi, dword [ebp + 0xc]
lea ecx, [eax*8]
cmp ecx, 0x20
jne 0x5e8681
mov dword [ebp], 0
jmp 0x5e8684
shl dword [ebp], cl
mov eax, dword [esp + 0x28]
add edx, ecx
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x2c]
mov dword [eax], edi
mov ecx, dword [ebp + 8]
mov dword [edx], ecx
pop edi
mov ecx, esi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x10
jmp 0x5e2fc0
pop edi
mov ecx, esi
pop esi
pop ebp
mov eax, 0xffffffea
pop ebx
add esp, 0x10
jmp 0x5e2fc0
pop edi
mov ecx, esi
pop esi
pop ebp
mov eax, 0xffffffe1
pop ebx
add esp, 0x10
jmp 0x5e2fc0