Function at 0x3f1000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x260
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x48], 0
mov esi, edi
test al, 3
je 0x3f109e
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x4c], eax
movzx eax, byte [eax]
cmp al, 0x25
je 0x3f1129
test al, al
je 0x3f3570
cmp dword [ebp + 8], 0
je 0x3f1092
mov ecx, edi
sub ecx, esi
mov edx, ecx
and edx, 1
mov ebx, esi
mov esi, ecx
xor esi, 1
lea edx, [esi + edx*2]
cmp edx, 0x200
jl 0x3f1090
add dword [esp + 0x48], ecx
push ecx
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov eax, dword [esp + 0x4c]
movzx eax, byte [eax]
mov esi, edi
jmp 0x3f1092
mov esi, ebx
mov byte [edi], al
inc edi
mov eax, dword [esp + 0x4c]
inc eax
test al, 3
jne 0x3f1030
mov dword [esp + 0x1c], esi
mov ecx, esi
mov ebx, edi
sub ecx, edi
add ecx, 0x200
jmp 0x3f10c1
mov dword [edi], eax
add edi, 4
mov ebx, edi
mov eax, dword [esp + 0x4c]
add eax, 4
add ecx, 0xfffffffc
mov dword [esp + 0x4c], eax
mov eax, dword [eax]
mov edi, eax
not edi
lea esi, [eax + eax]
mov edx, esi
not edx
add edx, eax
or edx, edi
and edx, 0x80808080
and esi, 0x4a4a4a4a
neg esi
add esi, eax
add esi, 0x25252525
mov edi, esi
not edi
and edi, 0x1010101
and esi, 0xfefefefe
sub esi, edi
test esi, edx
mov edi, ebx
jne 0x3f111d
lea esi, [eax - 0x1010101]
test edx, esi
jne 0x3f11d6
cmp dword [ebp + 8], 0
je 0x3f10b0
cmp ecx, 4
jge 0x3f10b0
mov esi, dword [esp + 0x1c]
cmp al, 0x25
jne 0x3f103f
mov ecx, dword [esp + 0x4c]
add ecx, 2
mov dword [esp + 4], 0
jmp 0x3f1140
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja 0x3f120b
jmp dword [edx*4 + 0x43b564]
mov esi, dword [esp + 0x1c]
test al, al
jne 0x3f1047
jmp 0x3f3570
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x2c], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x3f124f
dec ecx
cmp al, 0x2a
je 0x3f11f3
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x2c], 0
cmp dl, 9
ja 0x3f124f
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [ebx + ebx*4]
movzx eax, al
lea ebx, [eax + edx*2]
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x3f1230
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], 0xffffffff
cmp al, 0x2e
mov dword [esp + 0x1c], esi
jne 0x3f12c3
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x3f1281
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x18], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x3f12c3
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x18], 0
cmp dl, 9
ja 0x3f12c3
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [esi + esi*4]
lea esi, [eax + edx*2]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x3f12a0
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x1c]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja 0x3f12d6
jmp dword [eax*4 + 0x43b664]
movzx edx, byte [ecx]
mov dword [esp + 0x4c], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja 0x3f1a1e
mov dword [esp + 0x28], edi
jmp dword [eax*4 + 0x43b72c]
mov byte [esp + 0x25b], dl
mov dword [esp + 0x20], 1
mov byte [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0xc], 0
lea edx, [esp + 0x25b]
mov dword [esp + 4], 0
mov dword [esp + 0x10], 0
xor eax, eax
mov dword [esp + 0x2c], 0
jmp 0x3f2905
mov dword [esp], edx
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jg 0x3f2912
mov eax, ecx
mov dword [esp + 0x28], ecx
mov esi, eax
movsx eax, byte [esp + 0x40]
movsx edx, byte [esp + 0x34]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], esi
add ecx, esi
add ecx, eax
add ecx, edx
mov edx, dword [esp + 0x2c]
cmp edx, ecx
jg 0x3f293a
mov edx, ecx
sub edx, ecx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x18]
mov ecx, edx
not ecx
mov esi, dword [esp + 0x28]
and ecx, esi
not esi
and esi, edx
mov edx, esi
sub edx, ecx
test byte [esp + 4], 1
mov esi, dword [esp + 0x1c]
jne 0x3f2970
test byte [esp + 4], 0x10
jne 0x3f2976
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x2c]
jmp 0x3f2984
mov ecx, edx
mov edx, dword [esp + 0x2c]
cmp edx, ecx
jg 0x3f2982
mov edx, ecx
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], edx
add ecx, edx
mov edx, dword [esp]
je 0x3f2e9c
test byte [esp + 4], 1
jne 0x3f2afb
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jg 0x3f29c7
jmp 0x3f2afb
mov edi, eax
mov esi, eax
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp]
sub ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x3f2af2
mov dword [esp + 0x2c], ecx
cmp dword [ebp + 8], 0
je 0x3f29f2
mov ecx, edi
sub ecx, esi
mov eax, ecx
not eax
and ecx, 0xfffffdff
and eax, 0x200
sub eax, ecx
mov ecx, dword [esp + 0x2c]
mov ebx, ecx
cmp ecx, eax
jl 0x3f29f2
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x14], ecx
je 0x3f2a70
mov eax, edi
and eax, 3
je 0x3f2a60
mov ecx, edi
not edi
and edi, 3
mov eax, dword [esp + 0x14]
lea esi, [eax - 1]
cmp edi, esi
jb 0x3f2a19
mov edi, esi
lea eax, [edi + 1]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.003fcb10
add esp, 0xc
lea ecx, [edi + ebx]
inc ecx
sub esi, edi
mov edx, dword [esp]
cmp esi, 4
jge 0x3f2a79
test esi, esi
je 0x3f2ab3
push esi
push 0x20
mov edi, ecx
push ecx
call fcn.003fcb10
mov edx, dword [esp + 0xc]
add esp, 0xc
add edi, esi
jmp 0x3f2ab5
mov ecx, edi
mov esi, dword [esp + 0x14]
cmp esi, 4
jge 0x3f2a79
jmp 0x3f2a38
mov esi, ecx
mov ecx, edi
cmp esi, 4
jl 0x3f2a38
mov eax, esi
cmp esi, 7
jl 0x3f2a85
mov eax, 7
neg eax
lea edi, [esi + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.003fcb10
add esp, 0xc
lea ecx, [edi + ebx]
add ecx, 4
sub esi, edi
add esi, 0xfffffffc
mov edx, dword [esp]
test esi, esi
jne 0x3f2a3c
mov edi, ecx
mov esi, dword [esp + 0x1c]
cmp dword [ebp + 8], 0
mov ecx, dword [esp + 0x2c]
je 0x3f29bb
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x3f29bb
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x3f29b0
jmp 0x3f3593
mov dword [esp + 0x2c], ecx
movzx eax, byte [esp + 0x40]
lea ecx, [esp + 0x41]
mov dword [esp + 8], ecx
jmp 0x3f2b1c
mov edi, eax
mov esi, eax
mov edx, dword [esp]
movzx eax, byte [esp + 0x40]
test al, al
je 0x3f2c2d
movsx ecx, al
mov ebx, ecx
cmp dword [ebp + 8], 0
je 0x3f2b49
mov ebx, edi
not ebx
and ebx, esi
mov edx, esi
not edx
and edx, edi
sub ebx, edx
add ebx, 0x200
cmp ebx, ecx
jl 0x3f2b49
mov ebx, ecx
sub cl, bl
mov byte [esp + 0x40], cl
test ebx, ebx
je 0x3f2beb
mov ecx, ebx
and ecx, 3
je 0x3f2c20
mov dword [esp + 0x1c], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 8]
mov eax, edi
lea edi, [esi + 1]
mov dword [esp + 8], edi
mov edi, eax
movzx eax, byte [esi]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x3f2b70
add edi, edx
mov ecx, ebx
sub ecx, edx
mov esi, dword [esp + 0x1c]
cmp ebx, 4
jb 0x3f2beb
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x3f2ba0
cmp dword [ebp + 8], 0
je 0x3f2b14
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x3f2b14
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x3f2b10
jmp 0x3f3593
mov ecx, ebx
cmp ebx, 4
jae 0x3f2ba0
jmp 0x3f2beb
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0xc]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x14], ecx
xor esi, esi
test byte [esp + 4], 0x40
je 0x3f2c60
and eax, 0xffffff
add eax, dword [esp + 0x28]
mov esi, dword [esp + 0x14]
lea ecx, [esi + 1]
xor edx, edx
div ecx
sub esi, edx
mov edx, dword [esp]
cmp dword [esp + 0x28], 0
jle 0x3f3510
mov ebx, dword [esp + 0x28]
jmp 0x3f2c90
mov ebx, dword [esp + 0x28]
sub ebx, dword [esp + 0xc]
test ebx, ebx
jle 0x3f2e93
mov eax, dword [esp + 0x1c]
sub eax, edi
add eax, 0x200
mov ecx, ebx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x28], ebx
cmp ebx, eax
jl 0x3f2cad
mov dword [esp + 0xc], eax
cmp dword [ebp + 8], 0
mov ebx, dword [esp + 4]
jne 0x3f2cbf
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], eax
test bl, 0x40
jne 0x3f2d20
cmp dword [esp + 0xc], 0
je 0x3f2d30
mov eax, edi
and eax, 3
je 0x3f2d30
mov ecx, edi
not edi
and edi, 3
mov eax, dword [esp + 0xc]
dec eax
cmp edi, eax
jb 0x3f2ce4
mov edi, eax
mov dword [esp + 0x18], eax
lea eax, [edi + 1]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.003fcb10
add esp, 0xc
add ebx, edi
inc ebx
mov ecx, dword [esp + 0x18]
sub ecx, edi
mov edi, ebx
mov ebx, dword [esp + 4]
mov edx, dword [esp]
cmp ecx, 4
jge 0x3f2d39
jmp 0x3f2d7f
mov ecx, dword [esp + 0xc]
jmp 0x3f2d7f
mov ecx, dword [esp + 0xc]
cmp ecx, 4
jl 0x3f2d7f
mov edx, ecx
mov ecx, edi
mov eax, edx
mov edi, edx
cmp edx, 7
jl 0x3f2d4b
mov eax, 7
neg eax
mov dword [esp + 0x18], edi
add edi, eax
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.003fcb10
mov ecx, dword [esp + 0x24]
add esp, 0xc
sub ecx, edi
add ecx, 0xfffffffc
add edi, ebx
add edi, 4
mov ebx, dword [esp + 4]
mov edx, dword [esp]
test ecx, ecx
je 0x3f2de0
test cl, 1
jne 0x3f2da0
mov eax, ecx
cmp ecx, 1
jne 0x3f2e53
jmp 0x3f2de0
mov al, 0x30
test bl, 0x40
je 0x3f2dc8
cmp esi, dword [esp + 0x14]
jne 0x3f2dc7
movzx eax, byte [0x43e001]
mov esi, ecx
mov ecx, eax
add cl, al
and cl, 0x9c
sub al, cl
mov ecx, esi
add al, 0x4e
xor esi, esi
jmp 0x3f2dc8
inc esi
mov byte [edi], al
inc edi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x3f2e53
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
mov dword [esp + 4], ebx
je 0x3f2c80
mov eax, edi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x3f2c80
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov dword [esp + 0x1c], eax
mov edx, dword [esp]
jmp 0x3f2c80
movzx ecx, byte [0x43e001]
mov edx, ecx
add dl, cl
and dl, 0x9c
sub cl, dl
add cl, 0x4e
xor esi, esi
mov edx, dword [esp]
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
je 0x3f2de0
mov cl, 0x30
test bl, 0x40
je 0x3f2e81
cmp esi, dword [esp + 0x14]
jne 0x3f2e80
movzx edx, byte [0x43e001]
mov ch, dl
add ch, dl
and ch, 0x9c
sub dl, ch
add dl, 0x4e
xor esi, esi
jmp 0x3f2e83
inc esi
mov dl, 0x30
mov byte [edi], dl
test bl, 0x40
je 0x3f2e45
cmp esi, dword [esp + 0x14]
je 0x3f2e30
inc esi
jmp 0x3f2e45
movzx eax, byte [esp + 0x40]
mov esi, dword [esp + 0x1c]
lea ecx, [esp + 0x41]
mov dword [esp + 8], ecx
jmp 0x3f2ebc
mov edi, eax
mov esi, eax
mov edx, dword [esp]
movzx eax, byte [esp + 0x40]
test al, al
je 0x3f2fcd
movsx edx, al
mov ebx, esi
sub ebx, edi
add ebx, 0x200
cmp ebx, edx
jl 0x3f2ed7
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x3f2edf
mov ebx, edx
sub al, bl
mov byte [esp + 0x40], al
test ebx, ebx
je 0x3f2f7b
mov eax, ebx
and eax, 3
je 0x3f2fc0
mov dword [esp + 0x1c], esi
xor edx, edx
nop
nop
mov esi, dword [esp + 8]
mov ecx, edi
lea edi, [esi + 1]
mov dword [esp + 8], edi
mov edi, ecx
movzx ecx, byte [esi]
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x3f2f00
add edi, edx
mov eax, ebx
sub eax, edx
mov esi, dword [esp + 0x1c]
cmp ebx, 4
jb 0x3f2f7b
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 1], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 2], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [edi + 3], cl
add edi, 4
add eax, 0xfffffffc
jne 0x3f2f30
cmp dword [ebp + 8], 0
je 0x3f2eb4
mov ecx, edi
not ecx
and ecx, esi
mov eax, esi
not eax
and eax, edi
sub eax, ecx
cmp eax, 0x1ff
jl 0x3f2eb4
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x3f2eb0
jmp 0x3f3593
mov eax, ebx
cmp ebx, 4
jae 0x3f2f30
jmp 0x3f2f7b
mov dword [esp + 0x1c], esi
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x3f3129
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov esi, dword [esp + 0x1c]
jne 0x3f326d
lea eax, [esp + 0x35]
mov dword [esp + 8], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x3f3373
movsx edx, cl
mov eax, esi
sub eax, edi
add eax, 0x200
cmp eax, edx
jl 0x3f301f
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x3f3027
mov eax, edx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x3f30cb
mov ecx, eax
and ecx, 3
je 0x3f3110
mov dword [esp + 0x1c], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 8]
mov ebx, edi
lea edi, [esi + 1]
mov dword [esp + 8], edi
mov edi, ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x3f3050
add edi, edx
mov ecx, eax
sub ecx, edx
mov esi, dword [esp + 0x1c]
cmp eax, 4
jb 0x3f30cb
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x3f3080
cmp dword [ebp + 8], 0
je 0x3f3000
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x3f3000
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov esi, eax
jmp 0x3f3000
mov ecx, eax
cmp eax, 4
jae 0x3f3080
jmp 0x3f30cb
sub ebx, dword [esp]
je 0x3f2fdd
mov ecx, ebx
cmp dword [ebp + 8], 0
je 0x3f3152
mov eax, edi
sub eax, dword [esp + 0x1c]
mov ecx, eax
xor ecx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, ecx
mov ecx, ebx
cmp ebx, eax
jl 0x3f3152
mov ecx, eax
mov eax, ecx
mov dword [esp], ecx
cmp ecx, 4
jl 0x3f317b
nop
nop
nop
nop
mov ecx, dword [edx]
mov dword [edi], ecx
add edi, 4
add edx, 4
mov ecx, eax
xor ecx, 4
and eax, 0xfffffffb
add eax, eax
sub eax, ecx
cmp eax, 3
jg 0x3f3160
test eax, eax
je 0x3f3201
mov ecx, eax
and ecx, 7
je 0x3f3250
mov dword [esp + 0x14], ebx
mov esi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi + edx]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x3f31a0
add edi, edx
mov ecx, eax
sub ecx, edx
add esi, edx
mov edx, esi
mov ebx, dword [esp + 0x14]
cmp eax, 8
jb 0x3f3201
nop
movzx eax, byte [edx]
mov byte [edi], al
movzx eax, byte [edx + 1]
mov byte [edi + 1], al
movzx eax, byte [edx + 2]
mov byte [edi + 2], al
movzx eax, byte [edx + 3]
mov byte [edi + 3], al
movzx eax, byte [edx + 4]
mov byte [edi + 4], al
movzx eax, byte [edx + 5]
mov byte [edi + 5], al
movzx eax, byte [edx + 6]
mov byte [edi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [edi + 7], al
add edi, 8
add ecx, 0xfffffff8
jne 0x3f31c0
cmp dword [ebp + 8], 0
je 0x3f3120
mov eax, edi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x3f3120
mov esi, edx
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov dword [esp + 0x1c], eax
mov edx, esi
jmp 0x3f3120
mov ecx, eax
cmp eax, 8
jae 0x3f31c0
jmp 0x3f3201
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp]
je 0x3f2fed
mov edx, ecx
cmp dword [ebp + 8], 0
je 0x3f3286
mov eax, esi
sub eax, edi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x3f3286
mov edx, eax
test edx, edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], ecx
mov dword [esp], edx
je 0x3f32f0
mov eax, edi
and eax, 3
je 0x3f32f0
mov esi, edi
not edi
and edi, 3
lea ebx, [edx - 1]
cmp edi, ebx
jb 0x3f32ac
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x30
push esi
call fcn.003fcb10
add esp, 0xc
lea ecx, [edi + esi]
inc ecx
sub ebx, edi
mov esi, dword [esp + 0x1c]
cmp ebx, 4
jge 0x3f32f9
test ebx, ebx
je 0x3f3334
push ebx
push 0x30
mov edi, ecx
push ecx
call fcn.003fcb10
add esp, 0xc
add edi, ebx
cmp dword [ebp + 8], 0
jne 0x3f3340
jmp 0x3f3260
mov ecx, edi
mov ebx, edx
cmp ebx, 4
jl 0x3f32ca
mov eax, ebx
cmp ebx, 7
jl 0x3f3305
mov eax, 7
neg eax
lea edi, [ebx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
mov esi, ecx
push ecx
call fcn.003fcb10
add esp, 0xc
lea ecx, [edi + esi]
add ecx, 4
sub ebx, edi
add ebx, 0xfffffffc
mov esi, dword [esp + 0x1c]
test ebx, ebx
jne 0x3f32ce
mov edi, ecx
cmp dword [ebp + 8], 0
je 0x3f3260
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x3f3260
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov esi, eax
jmp 0x3f3260
test byte [esp + 4], 1
je 0x3f1095
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jle 0x3f1095
jne 0x3f33a8
jmp 0x3f1095
sub ecx, edx
je 0x3f1095
mov eax, esi
sub eax, edi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x3f33d0
mov edx, eax
cmp dword [ebp + 8], 0
je 0x3f33d6
test edx, edx
jne 0x3f33dc
jmp 0x3f3438
cmp dword [ebp + 8], 0
jne 0x3f33bf
mov edx, ecx
test edx, edx
je 0x3f3438
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], esi
lea esi, [edx + 3]
xor ebx, ebx
mov eax, edx
mov ecx, edi
mov dword [esp], edx
mov edi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], esi
mov esi, ecx
lea eax, [ecx + ebx]
mov edx, eax
xor edx, 0xfffffffc
mov ecx, eax
or ecx, 3
test ecx, edx
je 0x3f3450
mov ecx, esi
mov byte [esi + ebx], 0x20
inc ebx
dec edi
mov esi, dword [esp + 4]
dec esi
cmp dword [esp], ebx
jne 0x3f3400
add ecx, ebx
mov edi, ecx
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp]
cmp dword [ebp + 8], 0
jne 0x3f34d7
jmp 0x3f33a0
mov ecx, eax
mov dword [esp + 0x28], esi
mov edx, dword [esp]
mov eax, edx
sub eax, ebx
cmp eax, 4
jl 0x3f34ab
cmp edi, 7
jl 0x3f346c
mov edi, 7
mov eax, edx
sub eax, edi
sub eax, ebx
add eax, 3
and eax, 0xfffffffc
add eax, 4
push eax
push 0x20
push ecx
call fcn.003fcb10
mov edx, dword [esp + 0xc]
add esp, 0xc
mov ecx, dword [esp + 4]
sub ecx, edi
and ecx, 0xfffffffc
mov eax, dword [esp + 0x28]
add eax, ecx
lea edi, [ebx + eax]
add edi, 4
mov eax, edx
sub eax, ecx
sub eax, ebx
add eax, 0xfffffffc
jmp 0x3f34ad
mov edi, ecx
test eax, eax
mov esi, dword [esp + 0x1c]
je 0x3f34c9
push eax
push 0x20
push edi
mov ebx, eax
call fcn.003fcb10
mov edx, dword [esp + 0xc]
add esp, 0xc
add edi, ebx
mov ecx, dword [esp + 0x2c]
cmp dword [ebp + 8], 0
je 0x3f33a0
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x3f33a0
mov edi, esi
mov esi, edx
mov ebx, ecx
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x3f3593
mov edi, eax
mov ecx, ebx
mov edx, esi
mov esi, edi
jmp 0x3f33a0
lea eax, [esp + 0x41]
mov dword [esp + 8], eax
jmp 0x3f2fd1
cmp dword [ebp + 8], 0
je 0x3f3599
mov eax, edi
sub eax, esi
test eax, eax
jle 0x3f359c
add dword [esp + 0x48], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
mov edi, eax
mov esi, eax
jmp 0x3f359c
xor edi, edi
xor esi, esi
jmp 0x3f359c
mov byte [edi], 0
mov eax, dword [esp + 0x48]
add eax, edi
sub eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret