Function at 0x71acd504
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 0x71ac8e9e
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 0x71af64ba
cmp ebx, 7
ja 0x71affdd3
movzx edx, word [esi + 0xa]
test dl, 1
jne 0x71af9b36
movzx eax, byte [esi + 9]
mov edx, dword [ebp - 0x1c]
and eax, edx
mov dword [ebp - 0x3c], eax
je 0x71ac8dd9
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 + 0x627c848]
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 0x71ac8d9a
mov esi, dword [ebp - 0x34]
movzx ecx, byte [esi + 8]
mov eax, edx
not eax
and ecx, eax
mov dword [ebp - 0x34], ecx
je 0x71ac8e70
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 + 0x627c848]
mov edx, edi
mov dword [ebp - 0x3c], eax
call fcn.71af64e0
cmp byte [ebp - 6], 0
mov edi, eax
jne 0x71ac8e41
test byte [esi + 0xa], 0x20
jne 0x71b0f048
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 0x71ac8dfb
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 0x71ac8e8e
mov edi, ecx
mov esi, dword [esi]
mov dword [ebp - 0x34], esi
test esi, esi
jne 0x71ac8d46
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.71acad73
test al, al
jne 0x71acd4a6
mov cl, byte [esi]
movzx eax, cl
and eax, 0x1f
test byte [eax + 0x627b5f0], 0x18
je 0x71ad214a
mov al, byte [esi + 1]
mov ah, cl
and ah, 0x20
mov byte [ebp - 7], al
mov byte [ebp - 8], ah
jne 0x71acf896
test al, 0x40
je 0x71af26e3
mov eax, dword [ebp - 0x24]
add esi, 0x60
inc eax
mov edx, eax
mov dword [ebp - 0x24], eax
cmp eax, dword [ebx + 0x14]
jb 0x71acd463
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], edi
mov esi, dword [ebx + 0x1550]
test esi, esi
jne 0x71b0117e
mov esi, dword [ebx + 0x1554]
test esi, esi
jne 0x71b0117e
mov edx, dword [ebp + 0x10]
inc eax
push 2
pop esi
mov dword [ebp - 0x18], eax
cmp eax, esi
jae 0x71acd587
xor ecx, ecx
jmp 0x71acd56e
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 0x71b2800b
mov edx, dword [ebp + 0x10]
cmp dword [edx + 0xf], ecx
jne 0x71ae36bc
cmp dword [edx + 0xb], 3
ja 0x71ae36bc
mov eax, ecx
mov dword [ebp - 0x20], ecx
cmp dword [ebp + 0xc], ecx
je 0x71acd55a
test eax, eax
jne 0x71ae36ca
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 0x71acd69f
cmp dword [edx + 0xb], 0
jne 0x71acd69f
xor ecx, ecx
cmp dword [edx + 0xf], ecx
jne 0x71ae3a50
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp - 0xc]
test eax, eax
je 0x71acd5a1
mov dword [eax], esi
cmp dword [ebp + 0xc], 0
jne 0x71acd5b4
cmp dword [ebp - 0x20], 0
jne 0x71ae36ee
xor eax, eax
mov edx, eax
mov dword [ebp - 0x18], edx
cmp byte [ebx + 0x18d1], al
jne 0x71ac8d22
cmp byte [ebx + 0x1888], al
je 0x71add250
mov ecx, ebx
call fcn.71aca1fd
test al, al
jne 0x71afc10f
mov esi, dword [ebx + 0x16ac]
test esi, esi
je 0x71ac8e9e
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.71adb02a
movzx ecx, byte [esi + 0x18]
mov dword [ebp - 0x3c], eax
call fcn.71adb02a
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 0x71b28144
cmp ebx, 0x10
jb 0x71ae912f
cmp ebx, 0x79
jae 0x71aeff54
cmp dword [esi + 0x10], 0x1f
ja 0x71aeff54
test ecx, ecx
jne 0x71aeff54
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 0x71acd698
mov edi, edx
mov esi, dword [esi]
jmp 0x71acd5eb
mov esi, dword [ebx + 0x1c]
xor edx, edx
mov dword [ebp - 0x24], edx
cmp dword [ebx + 0x14], edx
jbe 0x71acd4cf
jmp 0x71acd463
test al, 0x20
je 0x71aefe2f
cmp byte [ebx + 0x190c], 0
je 0x71acd4a6
cmp edx, dword [ebx + 0x198c]
je 0x71b2801b
cmp dword [ebp - 0x18], 0
je 0x71ad214a
cmp byte [ebx + 0x188b], 0
mov edx, dword [esi + 0x28]
jne 0x71b2804c
mov al, byte [esi]
and al, 0x1f
cmp al, 0xf
je 0x71afc333
cmp byte [ebp - 7], 0x80
jae 0x71afc4a0
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
mov dword [ebp - 0x1c], edx
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71af66e3
xor ecx, ecx
call fcn.71af6694
movzx eax, al
add dword [ebp - 0xc], eax
jmp 0x71ad214a
mov al, byte [esi]
and al, 0x1f
cmp al, 0x11
jne 0x71acd4a6
test byte [esi + 1], 8
je 0x71acd4a6
push dword [ebp - 0x24]
mov ecx, ebx
call fcn.71ad2111
push dword [ebp - 0x24]
shr eax, 2
mov ecx, ebx
mov dword [ebp - 0x2c], eax
call fcn.71af7025
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 0x71acd4a6
mov dl, byte [ecx + edx]
mov byte [ebp - 8], dl
test dl, dl
jne 0x71af72e2
mov edx, dword [ebp - 0x3c]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, eax
jb 0x71ad21a3
jmp 0x71acd4a6
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 0x71b281e8
mov ebx, dword [ebx + 0x16a0]
mov dword [ebp - 0x10], ebx
test ebx, ebx
je 0x71ac8e9e
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 0x71add2dc
test byte [eax + 0xa], 0x20
jne 0x71b0f329
movzx eax, word [eax + 0xa]
test al, 1
jne 0x71ae5579
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 0x71add30e
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 0x71add2b2
jmp 0x71ac8e9e
xor eax, eax
inc eax
mov dword [ebp - 0x20], eax
jmp 0x71acd54d
mov edx, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
mov ecx, edi
mov edx, dword [edx]
call fcn.71ac8cdf
mov edx, dword [ebp + 0x10]
movzx ecx, al
mov dword [ebp - 0xc], ecx
add edi, ecx
xor ecx, ecx
jmp 0x71acd55d
mov eax, dword [eax]
mov cl, 1
cmp eax, 0x7f
ja 0x71b0f060
movzx eax, cl
add esi, eax
mov dword [ebp - 0xc], esi
jmp 0x71acd5b4
cmp byte [ebp - 6], cl
jne 0x71b2809b
mov eax, ecx
mov dword [ebp - 0x28], ecx
jmp 0x71ae3ac8
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 0x71ae3a98
test ebx, ebx
jne 0x71ae3ae6
mov dword [ebp - 0x34], ecx
mov esi, dword [esi]
mov dword [ebp - 0x30], esi
test esi, esi
jne 0x71ae3a66
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 0x71acd592
mov esi, dword [ebx + 0x1698]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], esi
test esi, esi
je 0x71ae3ab8
mov ebx, dword [ebp - 0x28]
jmp 0x71ae3a66
mov ecx, dword [ebp + 0xc]
mov edx, eax
neg ecx
sbb ecx, ecx
and ecx, edi
call fcn.71ac8cdf
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.71ac8cdf
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.71ac8cdf
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 0x71ae3a92
mov ecx, eax
and ecx, 6
cmp cx, dx
je 0x71b28215
mov dword [ebp - 0x18], esi
test al, 0x40
je 0x71af5cac
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.71ae567b
cmp dword [ebp - 0x50], 0x20
ja 0x71b28292
xor eax, eax
lea ecx, [ebp - 0x54]
mov esi, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], esi
call fcn.71ae5567
test al, al
jne 0x71b15712
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
cmp eax, 4
jae 0x71ae5619
test edx, edx
je 0x71af9119
xor ecx, ecx
push ebx
push dword [ebp - 0x24]
mov byte [ebp - 5], cl
mov ecx, eax
call fcn.71ae56e9
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
je 0x71af5f21
cmp eax, 0xff
jg 0x71afc650
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x71afec5a
test esi, esi
jne 0x71afec5a
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 0x71add2e8
test ebx, ebx
je 0x71acd654
cmp dword [esi + 0x10], 0
jne 0x71acd654
test ecx, ecx
jne 0x71acd654
shl dl, 4
or dl, bl
mov byte [edi], dl
inc edi
jmp 0x71acd680
test al, 8
je 0x71acd4a6
test cl, 0x40
je 0x71acf8ab
test al, 0x40
jne 0x71acd4a6
jmp 0x71acf8ab
cmp ebx, 0x1ff
ja 0x71aeff6d
cmp dword [esi + 0x10], 0xfff
ja 0x71aeff6d
test ecx, ecx
je 0x71af0b1e
cmp ebx, 0xff
ja 0x71aff129
cmp dword [esi + 0x10], 0x1f
ja 0x71aff129
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 0x71acd680
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 0x71aeff9b
test al, 8
jne 0x71acf8ab
jmp 0x71acd4a6
test cx, cx
je 0x71b28412
cmp ebx, 0x20
jae 0x71afb089
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 0x71b2844e
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 0x71afae2d
mov ebx, dword [ebp - 0x10]
inc esi
mov dword [ebp - 0x50], esi
mov ecx, dword [ebp - 0xc]
jmp 0x71add2ee
mov eax, dword [ebp - 0x20]
cmp eax, 7
ja 0x71b283ed
cmp dword [ebp - 0x24], 7
ja 0x71b283ed
cmp ebx, 0xc
ja 0x71b283bf
xor ecx, ecx
mov eax, ecx
mov dword [ebp - 0x3c], eax
cmp ebx, dword [eax*4 + 0x627eb60]
je 0x71afef3d
inc eax
mov dword [ebp - 0x3c], eax
cmp eax, 4
jb 0x71af5f50
cmp ebx, 6
jbe 0x71b000e5
cmp ebx, 0xc
jae 0x71b000e5
sub bl, 6
or bl, 0x40
mov byte [edi], bl
inc edi
mov ebx, ecx
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x71b159e2
test esi, esi
jne 0x71b159e2
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 0x71ae566a
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 0x71ac8d68
mov ecx, edi
call fcn.71af6694
movzx eax, al
add edi, eax
jmp 0x71acf911
cmp dword [ebp - 0x18], 0
je 0x71ad21b4
cmp byte [ebx + 0x188b], 0
mov eax, dword [esi + 0x28]
lea edx, [eax + ecx*4]
jne 0x71b28073
cmp byte [ebp - 8], 2
je 0x71b12b5a
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
mov dword [ebp - 0x1c], edx
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71af7346
xor ecx, ecx
call fcn.71af6694
movzx eax, al
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x28]
jmp 0x71ad21b4
mov ecx, edi
call fcn.71af6694
movzx eax, al
add edi, eax
jmp 0x71af732f
cmp ebx, 0x10
jae 0x71b11b78
mov cl, byte [ebp - 5]
test ebx, ebx
je 0x71b283f8
test cl, cl
je 0x71b000ec
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x71b28405
or al, 4
shl al, 4
or al, bl
jmp 0x71ae5667
test ecx, ecx
jne 0x71ae5619
mov al, 1
mov byte [ebp - 5], al
jmp 0x71af90e0
mov al, dl
and al, 6
cmp al, 4
je 0x71b2810e
push 6
pop eax
cmp word [esi + 8], ax
jae 0x71b0e279
test dl, 0x18
je 0x71b28137
mov edx, edi
mov ecx, esi
call fcn.71af64e0
push 6
pop ecx
mov edi, eax
mov ax, word [esi + 0xa]
and ax, cx
push 2
pop ecx
cmp ax, cx
jne 0x71af9b9e
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 0x71ac8e76
xor ecx, ecx
cmp word [esi + 8], cx
jne 0x71af9b75
jmp 0x71ac8e70
or ebx, 1
push 2
pop edx
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x10]
cmp ecx, edx
jne 0x71af5d10
or eax, 1
mov dword [ebp - 0x48], eax
jmp 0x71af5d10
mov byte [edi], 0x40
lea edx, [ebx - 0x1f]
inc edi
mov ecx, edi
call fcn.71ac8cdf
movzx eax, al
push 0x1f
add edi, eax
pop ebx
jmp 0x71af5cbe
imul eax, dword [ebx + 0x198c], 0x60
mov ecx, dword [ebx + 0x1c]
test byte [ecx + eax + 1], 0x20
je 0x71acd5e5
mov eax, dword [eax + ecx + 0x10]
movzx ecx, byte [eax + 0x627b6d8]
call fcn.71adb02a
shl eax, 4
test eax, eax
je 0x71acd5e5
inc esi
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0xc], esi
je 0x71acd5e5
mov byte [edi], al
inc edi
jmp 0x71acd5e5
or edx, 1
jmp 0x71acf8e0
push 2
pop eax
or edx, eax
jmp 0x71acf8ed
mov ecx, eax
movzx eax, al
sar ecx, 8
mov dword [ebp - 0x3c], eax
cmp ecx, 0x10
jae 0x71aff75d
or cl, 0x40
mov byte [edi], cl
inc edi
jmp 0x71ae5649
mov byte [edi], 0xf0
inc edi
shl esi, 4
mov ecx, edi
or esi, eax
mov edx, esi
call fcn.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71ae565f
mov ebx, dword [ebp - 0x3c]
jmp 0x71af5f86
shl al, 4
or al, dl
mov edx, dword [ebp - 0x1c]
push 4
test ecx, ecx
pop ecx
je 0x71aff15b
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 0x71acd686
mov byte [edi], 0xfe
mov byte [edi + 1], al
add edi, 2
mov dword [edi], ebx
mov eax, dword [esi + 0x10]
jmp 0x71aff150
mov byte [edi], 0x40
mov edx, ecx
inc edi
mov ecx, edi
call fcn.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71ae5649
mov byte [edi], 0xb8
mov edx, ebx
inc edi
mov ecx, edi
call fcn.71ac8cdf
mov ecx, dword [ebp - 0x28]
movzx eax, al
add edi, eax
mov dword [ebp - 0x18], ecx
xor eax, eax
mov ebx, eax
jmp 0x71ac8d71
mov al, cl
jmp 0x71af90e0
or bl, 0x40
mov byte [edi], bl
inc edi
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
test eax, eax
je 0x71b0f189
mov byte [edi], 0xf0
inc edi
shl edx, 4
mov ecx, edi
or edx, eax
call fcn.71ac8cdf
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.71ac8cdf
mov edx, dword [ebp - 0x24]
movzx eax, al
add edi, eax
mov ecx, edi
call fcn.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71ae566a
mov dl, byte [esi + 9]
movzx eax, dl
test byte [eax + 0x627b5f0], 0x18
je 0x71b011c5
cmp dword [ebp - 0x18], 0
je 0x71b011c5
mov eax, dword [esi + 4]
cmp dl, 0xf
jne 0x71b011a1
or eax, 1
sub ecx, eax
mov dword [ebp - 0x1c], eax
cmp dword [ebp + 0xc], 0
mov edx, ecx
jne 0x71b016e7
xor ecx, ecx
call fcn.71af6694
movzx eax, al
add dword [ebp - 0xc], eax
push esi
mov ecx, ebx
call fcn.71b01152
mov ecx, dword [ebp - 0x1c]
mov esi, eax
test esi, esi
jne 0x71b0117e
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], edi
jmp 0x71acd4eb
mov ecx, edi
call fcn.71af6694
movzx eax, al
add edi, eax
jmp 0x71b011bf
test dl, 0x18
je 0x71b28137
test ebx, ebx
je 0x71b0e28c
or bl, 0xc0
mov byte [edi], bl
inc edi
movzx ebx, word [esi + 0xa]
mov edx, edi
mov ecx, esi
call fcn.71af64e0
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.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71af9b8d
sub eax, 1
mov eax, dword [ebp - 0x10]
push 4
pop edx
jne 0x71add2dc
mov byte [edi], 0xf4
jmp 0x71b0f367
mov byte [edi], 0xbc
inc edi
jmp 0x71ac8e41
shr eax, 7
inc cl
jmp 0x71ae36f2
test edx, edx
je 0x71b0011b
jmp 0x71b00106
mov edx, eax
movzx eax, byte [edx + 8]
xor edx, edx
div dword [ebp - 0x30]
movsx eax, byte [edx + 0x627c848]
sub eax, 3
je 0x71b2820d
push 2
pop edx
sub eax, edx
je 0x71b28205
sub eax, 1
jne 0x71b0ea01
mov byte [edi], 0xf5
mov eax, dword [ebp - 0x10]
push 4
pop edx
inc edi
mov dword [ebp - 0x14], edi
jmp 0x71add2dc
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.71ac8cdf
movzx eax, al
mov ebx, esi
add edi, eax
mov dword [ebp - 0x14], edi
jmp 0x71af90e9
or edx, 1
jmp 0x71af730f
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x34], esi
jmp 0x71ae5600
mov byte [edi], 0xf0
inc edi
shl esi, 4
mov ecx, edi
or esi, eax
mov edx, esi
call fcn.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71af5f9c
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x71b28014
mov dword [eax], ecx
xor eax, eax
jmp 0x71ac8ea8
test byte [ebx + 0x1978], 1
jne 0x71acf8b7
mov ecx, ebx
call fcn.71aca1fd
test al, al
je 0x71b2803f
mov byte [ebp - 6], 1
jmp 0x71acd4a6
mov cl, byte [esi]
mov ah, byte [ebp - 8]
jmp 0x71acf8b7
test ah, ah
je 0x71acf8d4
test cl, 0x40
jne 0x71acf8d4
mov ecx, dword [ebx + 0x19f4]
mov eax, dword [ebx + 0x19f0]
lea eax, [eax + ecx*4]
add edx, eax
jmp 0x71acf8d4
mov al, byte [esi]
test al, 0x20
je 0x71af7302
test al, 0x40
jne 0x71af7302
mov ecx, dword [ebx + 0x19f4]
mov eax, dword [ebx + 0x19f0]
lea eax, [eax + ecx*4]
add edx, eax
jmp 0x71af7302
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.71ac8cdf
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.71ac8cdf
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.71ac8cdf
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 0x71ae3a5c
test ebx, ebx
je 0x71b2811e
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.71ac8cdf
movzx eax, al
add edi, eax
jmp 0x71ac8e70
or bl, 0xb0
mov edx, ecx
mov byte [edi], bl
inc edi
jmp 0x71af9b93
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 0x71b281d3
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 0x71b281bf
mov edx, dword [esi + 0x10]
mov ecx, edi
mov edx, dword [edx + ebx*4]
call fcn.71ac8cdf
mov ecx, dword [ebp - 0x34]
movzx eax, al
add ecx, eax
cmp dword [ebp + 0xc], 0
mov dword [ebp - 0x34], ecx
je 0x71b281b6
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x2c]
jb 0x71b28190
cmp dword [ebp + 0xc], 0
mov edx, dword [ebp - 0x1c]
jne 0x71b281db
lea edi, [edx + 0xe]
jmp 0x71aff154
mov eax, dword [ebp - 0x2c]
jmp 0x71b28188
mov eax, dword [ebp - 0x30]
mov dword [eax], ecx
jmp 0x71acd686
mov ecx, dword [ebx + 0x1a0c]
add eax, 0xffffffe3
and eax, 0xfffffffc
push eax
call fcn.71ac20af
mov dword [ebp - 0x44], eax
jmp 0x71add28b
mov byte [edi], 0xf7
jmp 0x71b0f35e
mov byte [edi], 0xf6
jmp 0x71b0f35e
mov ebx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x50]
mov edx, esi
movzx ecx, word [ebx + 8]
cmp esi, 0x20
jbe 0x71b28251
mov eax, dword [ebp - 0x44]
add eax, 0xffffffdf
add eax, esi
test ecx, ecx
je 0x71b28251
cmp byte [eax], 0
je 0x71b2824a
dec dword [ebp - 0x40]
dec ecx
mov byte [eax], 0
dec edx
dec eax
cmp edx, 0x20
ja 0x71b28237
xor edx, edx
inc edx
test ecx, ecx
je 0x71af5d17
mov edi, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x4c]
test edx, ebx
je 0x71b2827b
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 0x71b28268
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x4c], ebx
jmp 0x71ae5670
lea ecx, [ebp - 0x54]
call fcn.71ae5567
test al, al
je 0x71ae55d7
mov esi, dword [ebp - 0x4c]
xor eax, eax
push 0x20
mov ecx, eax
inc eax
pop edx
test eax, esi
je 0x71b282b8
inc ecx
add eax, eax
sub edx, 1
jne 0x71b282b3
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 0x71b2831b
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.71b27f5a
mov ebx, dword [ebp - 0x3c]
mov esi, eax
test ebx, ebx
je 0x71b2836c
mov edx, dword [ebp - 0x38]
mov ecx, edi
call fcn.71ac8cdf
movzx eax, al
add dword [ebp - 0x24], eax
cmp dword [ebp + 0xc], 0
je 0x71b28359
add edi, eax
cmp esi, 0xfffffffe
jne 0x71b28398
push 0xfffffffffffffffd
pop esi
sub ebx, 1
jne 0x71b2833b
mov dword [ebp - 0x14], edi
cmp dword [ebp + 0xc], 0
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x10]
jne 0x71b283af
lea edi, [edx + 0x12]
add edi, dword [ebp - 0x24]
mov dword [ebp - 0x14], edi
mov ecx, dword [ebp - 0xc]
jmp 0x71add2f4
lea eax, [ebp - 0x38]
push eax
push esi
lea ecx, [ebp - 0x54]
call fcn.71b27f5a
mov esi, eax
jmp 0x71b28361
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x24]
mov dword [ecx], eax
jmp 0x71b2838d
cmp ebx, 0x1b
jbe 0x71b283e2
mov byte [edi], 0x40
lea edx, [ebx - 0xc]
inc edi
mov ecx, edi
call fcn.71ac8cdf
movzx eax, al
add edi, eax
push 3
pop ebx
jmp 0x71af5f86
sub bl, 0xc
or bl, 0x40
mov byte [edi], bl
inc edi
jmp 0x71b283da
mov al, byte [ebp - 5]
jmp 0x71af90e0
test cl, cl
jne 0x71af90f7
jmp 0x71b000f2
test ebx, ebx
jne 0x71af910d
jmp 0x71ae5670
cmp ebx, 0x10
jb 0x71b28430
mov byte [edi], 0x40
lea edx, [ebx - 0xf]
inc edi
mov ecx, edi
call fcn.71ac8cdf
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.71ae567b
jmp 0x71ae5670
mov eax, dword [ebp - 0x44]
mov byte [eax + esi - 0x20], cl
test ecx, ecx
je 0x71af5d10
inc dword [ebp - 0x40]
jmp 0x71af5d10