Function at 0x71cfd504
Capabilities:
Encrypt data using speck

Disassembly:
mov esi, dword [ebx + 0x16a0]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x34], esi
test esi, esi
je 0x71cf8e9e
mov dword [ebp - 0x30], 0x25
mov ecx, dword [esi + 4]
mov ebx, ecx
sub ebx, edx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], ecx
lea edx, [ebx - 8]
cmp edx, 0x3f
jbe 0x71d264ba
cmp ebx, 7
ja 0x71d2fdd3
movzx edx, word [esi + 0xa]
test dl, 1
jne 0x71d29b36
movzx eax, byte [esi + 9]
mov edx, dword [ebp - 0x1c]
and eax, edx
mov dword [ebp - 0x3c], eax
je 0x71cf8dd9
mov dword [ebp - 0x18], ecx
mov esi, eax
mov ecx, esi
neg ecx
and ecx, esi
mov eax, ecx
not eax
and edx, eax
mov eax, ecx
mov dword [ebp - 0x1c], edx
xor edx, edx
div dword [ebp - 0x30]
push 0
mov al, byte [edx + 0x653c848]
mov edx, dword [ebp - 0x1c]
shl al, 3
or al, bl
mov byte [edi], al
inc edi
pop eax
mov ebx, eax
sub esi, ecx
jne 0x71cf8d9a
mov esi, dword [ebp - 0x34]
movzx ecx, byte [esi + 8]
mov eax, edx
not eax
and ecx, eax
mov dword [ebp - 0x34], ecx
je 0x71cf8e70
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], eax
mov eax, ecx
neg eax
and eax, ecx
or edx, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x1c], edx
xor edx, edx
push 0x25
pop ecx
div ecx
mov ecx, esi
movsx eax, byte [edx + 0x653c848]
mov edx, edi
mov dword [ebp - 0x3c], eax
call fcn.71d264e0
cmp byte [ebp - 6], 0
mov edi, eax
jne 0x71cf8e41
test byte [esi + 0xa], 0x20
jne 0x71d3f048
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
or al, 8
mov edx, dword [ebp - 0x1c]
shl al, 3
or al, bl
mov byte [edi], al
inc edi
sub ecx, dword [ebp - 0x38]
push 0
pop eax
mov dword [ebp - 0x34], ecx
mov ebx, eax
jne 0x71cf8dfb
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
mov eax, edi
sub eax, ecx
add dword [ebp - 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x71cf8e8e
mov edi, ecx
mov esi, dword [esi]
mov dword [ebp - 0x34], esi
test esi, esi
jne 0x71cf8d46
mov eax, dword [ebp - 0xc]
mov byte [edi], 0xff
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
push esi
mov ecx, ebx
call fcn.71cfad73
test al, al
jne 0x71cfd4a6
mov cl, byte [esi]
movzx eax, cl
and eax, 0x1f
test byte [eax + 0x653b5f0], 0x18
je 0x71d0214a
mov al, byte [esi + 1]
mov ah, cl
and ah, 0x20
mov byte [ebp - 7], al
mov byte [ebp - 8], ah
jne 0x71cff896
test al, 0x40
je 0x71d226e3
mov eax, dword [ebp - 0x24]
add esi, 0x60
inc eax
mov edx, eax
mov dword [ebp - 0x24], eax
cmp eax, dword [ebx + 0x14]
jb 0x71cfd463
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], edi
mov esi, dword [ebx + 0x1550]
test esi, esi
jne 0x71d3117e
mov esi, dword [ebx + 0x1554]
test esi, esi
jne 0x71d3117e
mov edx, dword [ebp + 0x10]
inc eax
push 2
pop esi
mov dword [ebp - 0x18], eax
cmp eax, esi
jae 0x71cfd587
xor ecx, ecx
jmp 0x71cfd56e
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
mov ebx, ecx
xor ecx, ecx
push esi
push edi
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0xc], ecx
mov byte [ebp - 6], cl
cmp byte [ebx + 0x193f], cl
je 0x71d5800b
mov edx, dword [ebp + 0x10]
cmp dword [edx + 0xf], ecx
jne 0x71d136bc
cmp dword [edx + 0xb], 3
ja 0x71d136bc
mov eax, ecx
mov dword [ebp - 0x20], ecx
cmp dword [ebp + 0xc], ecx
je 0x71cfd55a
test eax, eax
jne 0x71d136ca
mov edi, dword [ebp + 8]
push 2
mov dword [ebp - 0x14], edi
mov eax, ecx
mov dword [ebp - 0x18], ecx
pop esi
mov dword [ebp - 0x1c], ecx
cmp eax, 1
jne 0x71cfd69f
cmp dword [edx + 0xb], 0
jne 0x71cfd69f
xor ecx, ecx
cmp dword [edx + 0xf], ecx
jne 0x71d13a50
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp - 0xc]
test eax, eax
je 0x71cfd5a1
mov dword [eax], esi
cmp dword [ebp + 0xc], 0
jne 0x71cfd5b4
cmp dword [ebp - 0x20], 0
jne 0x71d136ee
xor eax, eax
mov edx, eax
mov dword [ebp - 0x18], edx
cmp byte [ebx + 0x18d1], al
jne 0x71cf8d22
cmp byte [ebx + 0x1888], al
je 0x71d0d250
mov ecx, ebx
call fcn.71cfa1fd
test al, al
jne 0x71d2c10f
mov esi, dword [ebx + 0x16ac]
test esi, esi
je 0x71cf8e9e
mov ebx, dword [esi + 8]
mov eax, dword [esi + 8]
sub ebx, dword [ebp - 0x18]
movzx ecx, byte [esi + 0x19]
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], eax
call fcn.71d0b02a
movzx ecx, byte [esi + 0x18]
mov dword [ebp - 0x3c], eax
call fcn.71d0b02a
mov ecx, dword [esi + 0x14]
mov edx, eax
mov eax, dword [ebp - 0x3c]
or ecx, eax
mov dword [ebp - 0x3c], ecx
or edx, eax
movzx ecx, word [esi + 0xc]
test cx, cx
mov ecx, dword [ebp - 0x3c]
jne 0x71d58144
cmp ebx, 0x10
jb 0x71d1912f
cmp ebx, 0x79
jae 0x71d1ff54
cmp dword [esi + 0x10], 0x1f
ja 0x71d1ff54
test ecx, ecx
jne 0x71d1ff54
or bl, 0x80
shl dl, 5
mov byte [edi], bl
or dl, byte [esi + 0x10]
mov byte [edi + 1], dl
add edi, 2
mov edx, dword [ebp - 0x1c]
mov eax, edi
sub eax, edx
add dword [ebp - 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x71cfd698
mov edi, edx
mov esi, dword [esi]
jmp 0x71cfd5eb
mov esi, dword [ebx + 0x1c]
xor edx, edx
mov dword [ebp - 0x24], edx
cmp dword [ebx + 0x14], edx
jbe 0x71cfd4cf
jmp 0x71cfd463
test al, 0x20
je 0x71d1fe2f
cmp byte [ebx + 0x190c], 0
je 0x71cfd4a6
cmp edx, dword [ebx + 0x198c]
je 0x71d5801b
cmp dword [ebp - 0x18], 0
je 0x71d0214a
cmp byte [ebx + 0x188b], 0
mov edx, dword [esi + 0x28]
jne 0x71d5804c
mov al, byte [esi]
and al, 0x1f
cmp al, 0xf
je 0x71d2c333
cmp byte [ebp - 7], 0x80
jae 0x71d2c4a0
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
mov dword [ebp - 0x1c], edx
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71d266e3
xor ecx, ecx
call fcn.71d26694
movzx eax, al
add dword [ebp - 0xc], eax
jmp 0x71d0214a
mov al, byte [esi]
and al, 0x1f
cmp al, 0x11
jne 0x71cfd4a6
test byte [esi + 1], 8
je 0x71cfd4a6
push dword [ebp - 0x24]
mov ecx, ebx
call fcn.71d02111
push dword [ebp - 0x24]
shr eax, 2
mov ecx, ebx
mov dword [ebp - 0x2c], eax
call fcn.71d27025
mov edx, eax
xor eax, eax
mov ecx, eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x28], ecx
test eax, eax
je 0x71cfd4a6
mov dl, byte [ecx + edx]
mov byte [ebp - 8], dl
test dl, dl
jne 0x71d272e2
mov edx, dword [ebp - 0x3c]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, eax
jb 0x71d021a3
jmp 0x71cfd4a6
mov eax, dword [ebx]
xor edx, edx
mov ecx, edx
mov dword [ebp - 0x48], edx
mov esi, edx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], esi
mov eax, dword [eax + 0x138]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], edx
cmp eax, 0x20
ja 0x71d581e8
mov ebx, dword [ebx + 0x16a0]
mov dword [ebp - 0x10], ebx
test ebx, ebx
je 0x71cf8e9e
mov ecx, dword [ebp - 0xc]
push 4
mov dword [ebp - 0x30], 0x25
pop edx
mov esi, dword [ebx + 4]
mov ebx, esi
sub ebx, dword [ebp - 0x18]
cmp byte [ebp - 6], 0
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
jne 0x71d0d2dc
test byte [eax + 0xa], 0x20
jne 0x71d3f329
movzx eax, word [eax + 0xa]
test al, 1
jne 0x71d15579
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c]
mov eax, edi
sub eax, edx
add ecx, eax
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0xc], ecx
jne 0x71d0d30e
mov edi, edx
mov dword [ebp - 0x14], edi
mov ebx, dword [ebx]
mov dword [ebp - 0x10], ebx
push 4
pop edx
test ebx, ebx
jne 0x71d0d2b2
jmp 0x71cf8e9e
xor eax, eax
inc eax
mov dword [ebp - 0x20], eax
jmp 0x71cfd54d
mov edx, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
mov ecx, edi
mov edx, dword [edx]
call fcn.71cf8cdf
mov edx, dword [ebp + 0x10]
movzx ecx, al
mov dword [ebp - 0xc], ecx
add edi, ecx
xor ecx, ecx
jmp 0x71cfd55d
mov eax, dword [eax]
mov cl, 1
cmp eax, 0x7f
ja 0x71d3f060
movzx eax, cl
add esi, eax
mov dword [ebp - 0xc], esi
jmp 0x71cfd5b4
cmp byte [ebp - 6], cl
jne 0x71d5809b
mov eax, ecx
mov dword [ebp - 0x28], ecx
jmp 0x71d13ac8
mov ecx, dword [esi + 4]
mov eax, ecx
and eax, 0xfffffffc
and ecx, 3
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esi + 0xc]
or eax, ecx
mov dword [ebp - 0x3c], edx
mov ecx, dword [esi + 8]
mov dword [ebp - 0x2c], ecx
cmp edx, ecx
je 0x71d13a98
test ebx, ebx
jne 0x71d13ae6
mov dword [ebp - 0x34], ecx
mov esi, dword [esi]
mov dword [ebp - 0x30], esi
test esi, esi
jne 0x71d13a66
mov ebx, dword [ebp - 0x38]
xor ecx, ecx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x14], edi
inc eax
mov dword [ebp - 0x28], eax
cmp eax, 2
jae 0x71cfd592
mov esi, dword [ebx + 0x1698]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], esi
test esi, esi
je 0x71d13ab8
mov ebx, dword [ebp - 0x28]
jmp 0x71d13a66
mov ecx, dword [ebp + 0xc]
mov edx, eax
neg ecx
sbb ecx, ecx
and ecx, edi
call fcn.71cf8cdf
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x34]
mov ecx, dword [ebp + 0xc]
movzx esi, al
neg ecx
sbb ecx, ecx
lea eax, [esi + edi]
and ecx, eax
call fcn.71cf8cdf
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 0xc]
movzx eax, al
add esi, eax
neg ecx
sbb ecx, ecx
lea eax, [esi + edi]
and ecx, eax
call fcn.71cf8cdf
mov ecx, dword [ebp - 0x2c]
movzx eax, al
add esi, eax
mov eax, esi
and eax, dword [ebp + 0xc]
add edi, eax
add dword [ebp - 0xc], esi
mov esi, dword [ebp - 0x30]
jmp 0x71d13a92
mov ecx, eax
and ecx, 6
cmp cx, dx
je 0x71d58215
mov dword [ebp - 0x18], esi
test al, 0x40
je 0x71d25cac
mov ecx, dword [ebp - 0x10]
mov edx, eax
shr eax, 8
shr edx, 0xc
and eax, 0xf
or eax, edx
mov dword [ebp - 0x2c], edx
movzx ecx, word [ecx + 8]
mov dword [ebp - 0x20], ecx
push ecx
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x28], eax
call fcn.71d1567b
cmp dword [ebp - 0x50], 0x20
ja 0x71d58292
xor eax, eax
lea ecx, [ebp - 0x54]
mov esi, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], esi
call fcn.71d15567
test al, al
jne 0x71d45712
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
cmp eax, 4
jae 0x71d15619
test edx, edx
je 0x71d29119
xor ecx, ecx
push ebx
push dword [ebp - 0x24]
mov byte [ebp - 5], cl
mov ecx, eax
call fcn.71d156e9
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
je 0x71d25f21
cmp eax, 0xff
jg 0x71d2c650
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x71d2ec5a
test esi, esi
jne 0x71d2ec5a
mov eax, dword [ebp - 0x3c]
or al, 0x80
mov byte [edi], al
inc edi
mov dword [ebp - 0x14], edi
mov ecx, dword [ebp - 0xc]
jmp 0x71d0d2e8
test ebx, ebx
je 0x71cfd654
cmp dword [esi + 0x10], 0
jne 0x71cfd654
test ecx, ecx
jne 0x71cfd654
shl dl, 4
or dl, bl
mov byte [edi], dl
inc edi
jmp 0x71cfd680
test al, 8
je 0x71cfd4a6
test cl, 0x40
je 0x71cff8ab
test al, 0x40
jne 0x71cfd4a6
jmp 0x71cff8ab
cmp ebx, 0x1ff
ja 0x71d1ff6d
cmp dword [esi + 0x10], 0xfff
ja 0x71d1ff6d
test ecx, ecx
je 0x71d20b1e
cmp ebx, 0xff
ja 0x71d2f129
cmp dword [esi + 0x10], 0x1f
ja 0x71d2f129
mov byte [edi], 0xf9
mov byte [edi + 1], bl
shl dl, 5
or dl, byte [esi + 0x10]
mov byte [edi + 2], dl
shl al, 5
or al, byte [esi + 0x14]
mov byte [edi + 3], al
add edi, 4
jmp 0x71cfd680
mov byte [edi], 0xfd
mov al, byte [esi + 0x10]
mov byte [edi + 1], al
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x10]
shr ecx, 4
xor cl, bl
shr eax, 4
shr ebx, 4
and cl, 0xf
xor cl, al
shl dl, 5
and bl, 0x1f
mov byte [edi + 2], cl
or bl, dl
mov byte [edi + 3], bl
jmp 0x71d1ff9b
test al, 8
jne 0x71cff8ab
jmp 0x71cfd4a6
test cx, cx
je 0x71d58412
cmp ebx, 0x20
jae 0x71d2b089
mov esi, dword [ebp - 0x50]
mov byte [edi], bl
inc edi
mov ebx, dword [ebp - 0x10]
mov dword [ebp - 0x14], edi
movzx ecx, word [ebx + 0xa]
shr ecx, 3
and ecx, 3
cmp esi, 0x20
jae 0x71d5844e
mov ebx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
add ebx, ebx
add eax, eax
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], eax
test ecx, ecx
jne 0x71d2ae2d
mov ebx, dword [ebp - 0x10]
inc esi
mov dword [ebp - 0x50], esi
mov ecx, dword [ebp - 0xc]
jmp 0x71d0d2ee
mov eax, dword [ebp - 0x20]
cmp eax, 7
ja 0x71d583ed
cmp dword [ebp - 0x24], 7
ja 0x71d583ed
cmp ebx, 0xc
ja 0x71d583bf
xor ecx, ecx
mov eax, ecx
mov dword [ebp - 0x3c], eax
cmp ebx, dword [eax*4 + 0x653eb60]
je 0x71d2ef3d
inc eax
mov dword [ebp - 0x3c], eax
cmp eax, 4
jb 0x71d25f50
cmp ebx, 6
jbe 0x71d300e5
cmp ebx, 0xc
jae 0x71d300e5
sub bl, 6
or bl, 0x40
mov byte [edi], bl
inc edi
mov ebx, ecx
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x71d459e2
test esi, esi
jne 0x71d459e2
mov eax, dword [ebp - 0x28]
shl bl, 3
or al, 0xd0
or bl, byte [ebp - 0x20]
shl bl, 3
or bl, byte [ebp - 0x24]
mov byte [edi], al
mov byte [edi + 1], bl
add edi, 2
jmp 0x71d1566a
and edx, 0x38
mov eax, edx
shr eax, 3
or al, 0xf0
mov byte [edi], al
inc edi
mov eax, dword [ebp - 0x18]
add eax, 8
add eax, edx
and ebx, 7
mov dword [ebp - 0x18], eax
jmp 0x71cf8d68
mov ecx, edi
call fcn.71d26694
movzx eax, al
add edi, eax
jmp 0x71cff911
cmp dword [ebp - 0x18], 0
je 0x71d021b4
cmp byte [ebx + 0x188b], 0
mov eax, dword [esi + 0x28]
lea edx, [eax + ecx*4]
jne 0x71d58073
cmp byte [ebp - 8], 2
je 0x71d42b5a
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
mov dword [ebp - 0x1c], edx
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71d27346
xor ecx, ecx
call fcn.71d26694
movzx eax, al
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x28]
jmp 0x71d021b4
mov ecx, edi
call fcn.71d26694
movzx eax, al
add edi, eax
jmp 0x71d2732f
cmp ebx, 0x10
jae 0x71d41b78
mov cl, byte [ebp - 5]
test ebx, ebx
je 0x71d583f8
test cl, cl
je 0x71d300ec
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x71d58405
or al, 4
shl al, 4
or al, bl
jmp 0x71d15667
test ecx, ecx
jne 0x71d15619
mov al, 1
mov byte [ebp - 5], al
jmp 0x71d290e0
mov al, dl
and al, 6
cmp al, 4
je 0x71d5810e
push 6
pop eax
cmp word [esi + 8], ax
jae 0x71d3e279
test dl, 0x18
je 0x71d58137
mov edx, edi
mov ecx, esi
call fcn.71d264e0
push 6
pop ecx
mov edi, eax
mov ax, word [esi + 0xa]
and ax, cx
push 2
pop ecx
cmp ax, cx
jne 0x71d29b9e
test ax, ax
sete al
lea eax, [eax*8 + 0xf0]
or al, byte [esi + 8]
shl al, 3
or al, bl
mov byte [edi], al
inc edi
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x18], edx
jmp 0x71cf8e76
xor ecx, ecx
cmp word [esi + 8], cx
jne 0x71d29b75
jmp 0x71cf8e70
or ebx, 1
push 2
pop edx
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x10]
cmp ecx, edx
jne 0x71d25d10
or eax, 1
mov dword [ebp - 0x48], eax
jmp 0x71d25d10
mov byte [edi], 0x40
lea edx, [ebx - 0x1f]
inc edi
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
push 0x1f
add edi, eax
pop ebx
jmp 0x71d25cbe
imul eax, dword [ebx + 0x198c], 0x60
mov ecx, dword [ebx + 0x1c]
test byte [ecx + eax + 1], 0x20
je 0x71cfd5e5
mov eax, dword [eax + ecx + 0x10]
movzx ecx, byte [eax + 0x653b6d8]
call fcn.71d0b02a
shl eax, 4
test eax, eax
je 0x71cfd5e5
inc esi
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0xc], esi
je 0x71cfd5e5
mov byte [edi], al
inc edi
jmp 0x71cfd5e5
or edx, 1
jmp 0x71cff8e0
push 2
pop eax
or edx, eax
jmp 0x71cff8ed
mov ecx, eax
movzx eax, al
sar ecx, 8
mov dword [ebp - 0x3c], eax
cmp ecx, 0x10
jae 0x71d2f75d
or cl, 0x40
mov byte [edi], cl
inc edi
jmp 0x71d15649
mov byte [edi], 0xf0
inc edi
shl esi, 4
mov ecx, edi
or esi, eax
mov edx, esi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71d1565f
mov ebx, dword [ebp - 0x3c]
jmp 0x71d25f86
shl al, 4
or al, dl
mov edx, dword [ebp - 0x1c]
push 4
test ecx, ecx
pop ecx
je 0x71d2f15b
mov byte [edi], 0xfa
mov byte [edi + 1], al
add edi, 2
mov dword [edi], ebx
add edi, ecx
mov eax, dword [esi + 0x10]
mov dword [edi], eax
mov eax, dword [esi + 0x14]
add edi, ecx
mov dword [edi], eax
add edi, ecx
jmp 0x71cfd686
mov byte [edi], 0xfe
mov byte [edi + 1], al
add edi, 2
mov dword [edi], ebx
mov eax, dword [esi + 0x10]
jmp 0x71d2f150
mov byte [edi], 0x40
mov edx, ecx
inc edi
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71d15649
mov byte [edi], 0xb8
mov edx, ebx
inc edi
mov ecx, edi
call fcn.71cf8cdf
mov ecx, dword [ebp - 0x28]
movzx eax, al
add edi, eax
mov dword [ebp - 0x18], ecx
xor eax, eax
mov ebx, eax
jmp 0x71cf8d71
mov al, cl
jmp 0x71d290e0
or bl, 0x40
mov byte [edi], bl
inc edi
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
test eax, eax
je 0x71d3f189
mov byte [edi], 0xf0
inc edi
shl edx, 4
mov ecx, edi
or edx, eax
call fcn.71cf8cdf
movzx eax, al
add edi, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x20]
or al, 0xe0
mov byte [edi], al
inc edi
mov ecx, edi
call fcn.71cf8cdf
mov edx, dword [ebp - 0x24]
movzx eax, al
add edi, eax
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71d1566a
mov dl, byte [esi + 9]
movzx eax, dl
test byte [eax + 0x653b5f0], 0x18
je 0x71d311c5
cmp dword [ebp - 0x18], 0
je 0x71d311c5
mov eax, dword [esi + 4]
cmp dl, 0xf
jne 0x71d311a1
or eax, 1
sub ecx, eax
mov dword [ebp - 0x1c], eax
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71d316e7
xor ecx, ecx
call fcn.71d26694
movzx eax, al
add dword [ebp - 0xc], eax
push esi
mov ecx, ebx
call fcn.71d31152
mov ecx, dword [ebp - 0x1c]
mov esi, eax
test esi, esi
jne 0x71d3117e
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], edi
jmp 0x71cfd4eb
mov ecx, edi
call fcn.71d26694
movzx eax, al
add edi, eax
jmp 0x71d311bf
test dl, 0x18
je 0x71d58137
test ebx, ebx
je 0x71d3e28c
or bl, 0xc0
mov byte [edi], bl
inc edi
movzx ebx, word [esi + 0xa]
mov edx, edi
mov ecx, esi
call fcn.71d264e0
and bl, 6
mov edi, eax
neg bl
sbb bl, bl
and bl, 0xfc
add bl, 0xfc
mov byte [edi], bl
inc edi
movzx edx, word [esi + 8]
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71d29b8d
sub eax, 1
mov eax, dword [ebp - 0x10]
push 4
pop edx
jne 0x71d0d2dc
mov byte [edi], 0xf4
jmp 0x71d3f367
mov byte [edi], 0xbc
inc edi
jmp 0x71cf8e41
shr eax, 7
inc cl
jmp 0x71d136f2
test edx, edx
je 0x71d3011b
jmp 0x71d30106
mov edx, eax
movzx eax, byte [edx + 8]
xor edx, edx
div dword [ebp - 0x30]
movsx eax, byte [edx + 0x653c848]
sub eax, 3
je 0x71d5820d
push 2
pop edx
sub eax, edx
je 0x71d58205
sub eax, 1
jne 0x71d3ea01
mov byte [edi], 0xf5
mov eax, dword [ebp - 0x10]
push 4
pop edx
inc edi
mov dword [ebp - 0x14], edi
jmp 0x71d0d2dc
movzx esi, al
neg esi
mov byte [edi], 0x40
sbb esi, esi
and esi, 0xf
inc edi
sub ebx, esi
mov ecx, edi
mov edx, ebx
call fcn.71cf8cdf
movzx eax, al
mov ebx, esi
add edi, eax
mov dword [ebp - 0x14], edi
jmp 0x71d290e9
or edx, 1
jmp 0x71d2730f
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x34], esi
jmp 0x71d15600
mov byte [edi], 0xf0
inc edi
shl esi, 4
mov ecx, edi
or esi, eax
mov edx, esi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71d25f9c
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x71d58014
mov dword [eax], ecx
xor eax, eax
jmp 0x71cf8ea8
test byte [ebx + 0x1978], 1
jne 0x71cff8b7
mov ecx, ebx
call fcn.71cfa1fd
test al, al
je 0x71d5803f
mov byte [ebp - 6], 1
jmp 0x71cfd4a6
mov cl, byte [esi]
mov ah, byte [ebp - 8]
jmp 0x71cff8b7
test ah, ah
je 0x71cff8d4
test cl, 0x40
jne 0x71cff8d4
mov ecx, dword [ebx + 0x19f4]
mov eax, dword [ebx + 0x19f0]
lea eax, [eax + ecx*4]
add edx, eax
jmp 0x71cff8d4
mov al, byte [esi]
test al, 0x20
je 0x71d27302
test al, 0x40
jne 0x71d27302
mov ecx, dword [ebx + 0x19f4]
mov eax, dword [ebx + 0x19f0]
lea eax, [eax + ecx*4]
add edx, eax
jmp 0x71d27302
imul ecx, dword [ebx + 0x198c], 0x60
mov eax, dword [ebx + 0x1c]
mov eax, dword [ecx + eax + 0x28]
mov ecx, dword [ebp + 0xc]
cdq
xor eax, edx
sub eax, edx
or eax, esi
neg ecx
mov edx, eax
sbb ecx, ecx
and ecx, edi
call fcn.71cf8cdf
mov ecx, dword [ebp + 0xc]
movzx esi, al
neg ecx
sbb ecx, ecx
xor edx, edx
lea eax, [esi + edi]
and ecx, eax
call fcn.71cf8cdf
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
movzx eax, al
add esi, eax
neg ecx
sbb ecx, ecx
lea eax, [esi + edi]
and ecx, eax
call fcn.71cf8cdf
movzx eax, al
add esi, eax
add dword [ebp - 0xc], esi
mov eax, esi
and eax, dword [ebp + 0xc]
add edi, eax
xor ecx, ecx
mov dword [ebp - 0x14], edi
jmp 0x71d13a5c
test ebx, ebx
je 0x71d5811e
or bl, 0xc0
mov dword [ebp - 0x18], ecx
mov byte [edi], bl
inc edi
mov byte [edi], 0xfd
inc edi
movzx edx, word [esi + 8]
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
jmp 0x71cf8e70
or bl, 0xb0
mov edx, ecx
mov byte [edi], bl
inc edi
jmp 0x71d29b93
movzx ecx, word [esi + 0xc]
mov dword [ebp - 0x2c], ecx
xor ecx, ecx
and dword [ebp - 0x30], ecx
mov dword [ebp - 0x34], ecx
cmp dword [ebp + 0xc], ecx
je 0x71d581d3
mov byte [edi], 0xfb
shl al, 4
or al, dl
mov byte [edi + 1], al
add edi, 2
mov eax, dword [ebp - 0x2c]
push 4
pop edx
mov dword [edi], ebx
add edi, edx
mov dword [edi], eax
add edi, edx
mov dword [ebp - 0x30], edi
add edi, edx
xor edx, edx
mov ebx, edx
test eax, eax
je 0x71d581bf
mov edx, dword [esi + 0x10]
mov ecx, edi
mov edx, dword [edx + ebx*4]
call fcn.71cf8cdf
mov ecx, dword [ebp - 0x34]
movzx eax, al
add ecx, eax
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0x34], ecx
je 0x71d581b6
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x2c]
jb 0x71d58190
cmp dword [ebp + 0xc], 0
mov edx, dword [ebp - 0x1c]
jne 0x71d581db
lea edi, [edx + 0xe]
jmp 0x71d2f154
mov eax, dword [ebp - 0x2c]
jmp 0x71d58188
mov eax, dword [ebp - 0x30]
mov dword [eax], ecx
jmp 0x71cfd686
mov ecx, dword [ebx + 0x1a0c]
add eax, 0xffffffe3
and eax, 0xfffffffc
push eax
call fcn.71cf20af
mov dword [ebp - 0x44], eax
jmp 0x71d0d28b
mov byte [edi], 0xf7
jmp 0x71d3f35e
mov byte [edi], 0xf6
jmp 0x71d3f35e
mov ebx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x50]
mov edx, esi
movzx ecx, word [ebx + 8]
cmp esi, 0x20
jbe 0x71d58251
mov eax, dword [ebp - 0x44]
add eax, 0xffffffdf
add eax, esi
test ecx, ecx
je 0x71d58251
cmp byte [eax], 0
je 0x71d5824a
dec dword [ebp - 0x40]
dec ecx
mov byte [eax], 0
dec edx
dec eax
cmp edx, 0x20
ja 0x71d58237
xor edx, edx
inc edx
test ecx, ecx
je 0x71d25d17
mov edi, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x4c]
test edx, ebx
je 0x71d5827b
mov eax, edx
not eax
and edi, eax
and ebx, eax
mov dword [ebp - 0x48], edi
dec ecx
add edx, edx
test ecx, ecx
jne 0x71d58268
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x4c], ebx
jmp 0x71d15670
lea ecx, [ebp - 0x54]
call fcn.71d15567
test al, al
je 0x71d155d7
mov esi, dword [ebp - 0x4c]
xor eax, eax
push 0x20
mov ecx, eax
inc eax
pop edx
test eax, esi
je 0x71d582b8
inc ecx
add eax, eax
sub edx, 1
jne 0x71d582b3
add ecx, dword [ebp - 0x40]
xor eax, eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], eax
cmp dword [ebp + 0xc], eax
je 0x71d5831b
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x28]
mov byte [edi], 0xf8
shl al, 4
or al, dl
mov byte [edi + 1], al
add edi, 2
mov eax, dword [ebp - 0x20]
push 4
pop edx
mov dword [edi], ebx
add edi, edx
mov dword [edi], eax
add edi, edx
mov dword [edi], ecx
add edi, edx
mov dword [ebp - 0x34], edi
add edi, edx
mov dword [ebp - 0x14], edi
lea eax, [ebp - 0x38]
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x54]
call fcn.71d57f5a
mov ebx, dword [ebp - 0x3c]
mov esi, eax
test ebx, ebx
je 0x71d5836c
mov edx, dword [ebp - 0x38]
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add dword [ebp - 0x24], eax
cmp dword [ebp + 0xc], 0
je 0x71d58359
add edi, eax
cmp esi, 0xfffffffe
jne 0x71d58398
push 0xfffffffffffffffd
pop esi
sub ebx, 1
jne 0x71d5833b
mov dword [ebp - 0x14], edi
cmp dword [ebp + 0xc], 0
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x10]
jne 0x71d583af
lea edi, [edx + 0x12]
add edi, dword [ebp - 0x24]
mov dword [ebp - 0x14], edi
mov ecx, dword [ebp - 0xc]
jmp 0x71d0d2f4
lea eax, [ebp - 0x38]
push eax
push esi
lea ecx, [ebp - 0x54]
call fcn.71d57f5a
mov esi, eax
jmp 0x71d58361
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x24]
mov dword [ecx], eax
jmp 0x71d5838d
cmp ebx, 0x1b
jbe 0x71d583e2
mov byte [edi], 0x40
lea edx, [ebx - 0xc]
inc edi
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
add edi, eax
push 3
pop ebx
jmp 0x71d25f86
sub bl, 0xc
or bl, 0x40
mov byte [edi], bl
inc edi
jmp 0x71d583da
mov al, byte [ebp - 5]
jmp 0x71d290e0
test cl, cl
jne 0x71d290f7
jmp 0x71d300f2
test ebx, ebx
jne 0x71d2910d
jmp 0x71d15670
cmp ebx, 0x10
jb 0x71d58430
mov byte [edi], 0x40
lea edx, [ebx - 0xf]
inc edi
mov ecx, edi
call fcn.71cf8cdf
movzx eax, al
push 0xf
add edi, eax
pop ebx
or bl, 0x50
lea ecx, [ebp - 0x54]
mov byte [edi], bl
inc edi
push 1
mov dword [ebp - 0x14], edi
call fcn.71d1567b
jmp 0x71d15670
mov eax, dword [ebp - 0x44]
mov byte [eax + esi - 0x20], cl
test ecx, ecx
je 0x71d25d10
inc dword [ebp - 0x40]
jmp 0x71d25d10