Function at 0x51f81f0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 8
push edi
mov edi, dword [esp + 0x10]
test edi, edi
jne 0x51f8203
xor eax, eax
pop edi
add esp, 8
ret
push ebx
push 0x51
mov dword [esp + 0xc], 0x50
call dword [0x53f2e50]
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x51f822f
mov eax, str.saving_URI_n
call fcn.051f7e00
pop ebx
xor eax, eax
pop edi
add esp, 8
ret
mov ecx, dword [esp + 8]
push ebp
mov ebp, dword [edi]
push esi
xor esi, esi
test ebp, ebp
je 0x51f82b1
cmp byte [ebp], 0
je 0x51f82ac
cmp esi, ecx
jl 0x51f827b
cmp ecx, 0x100000
jg 0x51f8428
mov eax, dword [esp + 0x10]
lea ecx, [eax + eax + 1]
push ecx
push ebx
call dword [0x53f2e54]
add esp, 8
test eax, eax
je 0x51f8446
mov edx, dword [esp + 0x10]
lea ecx, [edx + edx]
mov dword [esp + 0x10], ecx
mov ebx, eax
mov dl, byte [ebp]
mov byte [esi + ebx], dl
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x51f8243
cmp esi, ecx
jl 0x51f82ac
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov ebx, eax
mov byte [esi + ebx], 0x3a
inc esi
mov eax, dword [edi + 4]
test eax, eax
je 0x51f8480
mov edi, eax
cmp byte [edi], 0
mov dword [esp + 0x14], edi
je 0x51f8bc0
lea ebp, [esi + 3]
mov edi, edi
cmp ebp, ecx
jl 0x51f8308
cmp ecx, 0x100000
jg 0x51f8428
mov edi, dword [esp + 0x10]
lea eax, [edi + edi + 1]
push eax
push ebx
call dword [0x53f2e54]
add esp, 8
test eax, eax
je 0x51f8446
lea ecx, [edi + edi]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov ebx, eax
mov al, byte [edi]
cmp al, 0x3b
je 0x51f8464
cmp al, 0x2f
je 0x51f8464
cmp al, 0x3f
je 0x51f8464
cmp al, 0x3a
je 0x51f8464
cmp al, 0x40
je 0x51f8464
cmp al, 0x26
je 0x51f8464
cmp al, 0x3d
je 0x51f8464
cmp al, 0x2b
je 0x51f8464
cmp al, 0x24
je 0x51f8464
cmp al, 0x2c
je 0x51f8464
cmp al, 0x5b
je 0x51f8464
cmp al, 0x5d
je 0x51f8464
cmp al, 0x61
jl 0x51f8376
cmp al, 0x7a
jle 0x51f8464
cmp al, 0x41
jl 0x51f8382
cmp al, 0x5a
jle 0x51f8464
cmp al, 0x30
jl 0x51f838e
cmp al, 0x39
jle 0x51f8464
cmp al, 0x2d
je 0x51f8464
cmp al, 0x5f
je 0x51f8464
cmp al, 0x2e
je 0x51f8464
cmp al, 0x21
je 0x51f8464
cmp al, 0x7e
je 0x51f8464
cmp al, 0x2a
je 0x51f8464
cmp al, 0x27
je 0x51f8464
cmp al, 0x28
je 0x51f8464
cmp al, 0x29
je 0x51f8464
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f83f6
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f846e
mov eax, str.reaching_arbitrary_MAX_URI_LENGTH_limit_n
call fcn.051f7e00
push ebx
call dword [0x53f2e48]
add esp, 4
pop esi
pop ebp
pop ebx
xor eax, eax
pop edi
add esp, 8
ret
mov eax, str.saving_URI_n
call fcn.051f7e00
push ebx
call dword [0x53f2e48]
add esp, 4
pop esi
pop ebp
pop ebx
xor eax, eax
pop edi
add esp, 8
ret
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
je 0x51f8bc0
mov ecx, dword [esp + 0x10]
jmp 0x51f82d0
cmp dword [edi + 0xc], 0
jne 0x51f8621
cmp dword [edi + 0x14], 0xffffffff
je 0x51f8621
cmp dword [edi + 8], 0
je 0x51f85f1
lea edx, [esi + 3]
cmp edx, ecx
jl 0x51f84c0
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x1c]
mov ebx, eax
mov byte [esi + ebx], 0x2f
inc esi
mov byte [esi + ebx], 0x2f
mov eax, dword [edi + 8]
inc esi
cmp byte [eax], 0
mov dword [esp + 0x14], eax
je 0x51f8828
lea ebp, [esi + 3]
mov edi, eax
nop
cmp ebp, dword [esp + 0x10]
jl 0x51f8501
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x14]
mov ebx, eax
mov al, byte [edi]
cmp al, 0x61
jl 0x51f850f
cmp al, 0x7a
jle 0x51f85d9
cmp al, 0x41
jl 0x51f851b
cmp al, 0x5a
jle 0x51f85d9
cmp al, 0x30
jl 0x51f8527
cmp al, 0x39
jle 0x51f85d9
cmp al, 0x2d
je 0x51f85d9
cmp al, 0x5f
je 0x51f85d9
cmp al, 0x2e
je 0x51f85d9
cmp al, 0x21
je 0x51f85d9
cmp al, 0x7e
je 0x51f85d9
cmp al, 0x2a
je 0x51f85d9
cmp al, 0x27
je 0x51f85d9
cmp al, 0x28
je 0x51f85d9
cmp al, 0x29
je 0x51f85d9
cmp al, 0x24
je 0x51f85d9
cmp al, 0x2c
je 0x51f85d9
cmp al, 0x3b
je 0x51f85d9
cmp al, 0x3a
je 0x51f85d9
cmp al, 0x40
je 0x51f85d9
cmp al, 0x26
je 0x51f85d9
cmp al, 0x3d
je 0x51f85d9
cmp al, 0x2b
je 0x51f85d9
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f85a7
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f85e3
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
jne 0x51f84e0
jmp 0x51f8828
cmp dword [edi], 0
je 0x51f8828
lea edx, [esi + 3]
cmp edx, ecx
jl 0x51f8828
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
jmp 0x51f8828
lea eax, [esi + 3]
cmp eax, ecx
jl 0x51f8647
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov ebx, eax
mov byte [esi + ebx], 0x2f
inc esi
mov byte [esi + ebx], 0x2f
mov eax, dword [edi + 0x10]
inc esi
test eax, eax
je 0x51f879d
cmp byte [eax], 0
mov dword [esp + 0x14], eax
je 0x51f8770
lea ebp, [esi + 3]
lea esp, [esp]
cmp ebp, dword [esp + 0x10]
jl 0x51f868d
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov edi, dword [esp + 0x14]
mov al, byte [edi]
cmp al, 0x61
jl 0x51f869f
cmp al, 0x7a
jle 0x51f875d
cmp al, 0x41
jl 0x51f86ab
cmp al, 0x5a
jle 0x51f875d
cmp al, 0x30
jl 0x51f86b7
cmp al, 0x39
jle 0x51f875d
cmp al, 0x2d
je 0x51f875d
cmp al, 0x5f
je 0x51f875d
cmp al, 0x2e
je 0x51f875d
cmp al, 0x21
je 0x51f875d
cmp al, 0x7e
je 0x51f875d
cmp al, 0x2a
je 0x51f875d
cmp al, 0x27
je 0x51f875d
cmp al, 0x28
je 0x51f875d
cmp al, 0x29
je 0x51f875d
cmp al, 0x3b
je 0x51f875d
cmp al, 0x3a
je 0x51f875d
cmp al, 0x26
je 0x51f875d
cmp al, 0x3d
je 0x51f875d
cmp al, 0x2b
je 0x51f875d
cmp al, 0x24
je 0x51f875d
cmp al, 0x2c
je 0x51f875d
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f872b
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f8767
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
jne 0x51f8670
lea ecx, [esi + 3]
cmp ecx, dword [esp + 0x10]
jl 0x51f8790
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov byte [esi + ebx], 0x40
inc esi
mov edi, dword [edi + 0xc]
test edi, edi
je 0x51f8828
mov ebp, edi
cmp byte [ebp], 0
je 0x51f87dd
cmp esi, ecx
jl 0x51f87cf
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ecx, dword [esp + 0x10]
mov ebx, eax
mov dl, byte [ebp]
mov byte [esi + ebx], dl
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x51f87b0
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x14], 0
jle 0x51f8828
lea edx, [esi + 0xa]
cmp edx, ecx
jl 0x51f8805
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 0x10]
push ecx
push 0x52bb094
sub edx, esi
push edx
lea eax, [esi + ebx]
push eax
call dword [sym.imp.MSVCR90.dll__snprintf]
add esp, 0x10
add esi, eax
mov ecx, dword [esp + 0x1c]
mov ebp, dword [ecx + 0x18]
test ebp, ebp
je 0x51f89c8
mov edx, ecx
mov ecx, dword [edx]
mov dword [esp + 0x14], ebp
test ecx, ecx
je 0x51f88b0
cmp byte [ebp], 0x2f
jne 0x51f88b0
mov al, byte [ebp + 1]
cmp al, 0x61
jl 0x51f8854
cmp al, 0x7a
jle 0x51f885c
cmp al, 0x41
jl 0x51f88b0
cmp al, 0x5a
jg 0x51f88b0
cmp byte [ebp + 2], 0x3a
jne 0x51f88b0
push str.file
push ecx
call fcn.051ed460
add esp, 8
test eax, eax
je 0x51f88b0
lea eax, [esi + 3]
cmp eax, dword [esp + 0x10]
jl 0x51f8894
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov cl, byte [ebp]
mov byte [esi + ebx], cl
mov dl, byte [ebp + 1]
inc ebp
inc esi
mov byte [esi + ebx], dl
mov al, byte [ebp + 1]
inc ebp
inc esi
mov byte [esi + ebx], al
inc esi
inc ebp
mov dword [esp + 0x14], ebp
cmp byte [ebp], 0
je 0x51f89c8
lea ebp, [esi + 3]
lea ecx, [ecx]
cmp ebp, dword [esp + 0x10]
jl 0x51f88dd
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov edi, dword [esp + 0x14]
mov al, byte [edi]
cmp al, 0x61
jl 0x51f88ef
cmp al, 0x7a
jle 0x51f89b5
cmp al, 0x41
jl 0x51f88fb
cmp al, 0x5a
jle 0x51f89b5
cmp al, 0x30
jl 0x51f8907
cmp al, 0x39
jle 0x51f89b5
cmp al, 0x2d
je 0x51f89b5
cmp al, 0x5f
je 0x51f89b5
cmp al, 0x2e
je 0x51f89b5
cmp al, 0x21
je 0x51f89b5
cmp al, 0x7e
je 0x51f89b5
cmp al, 0x2a
je 0x51f89b5
cmp al, 0x27
je 0x51f89b5
cmp al, 0x28
je 0x51f89b5
cmp al, 0x29
je 0x51f89b5
cmp al, 0x2f
je 0x51f89b5
cmp al, 0x3b
je 0x51f89b5
cmp al, 0x40
je 0x51f89b5
cmp al, 0x26
je 0x51f89b5
cmp al, 0x3d
je 0x51f89b5
cmp al, 0x2b
je 0x51f89b5
cmp al, 0x24
je 0x51f89b5
cmp al, 0x2c
je 0x51f89b5
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f8983
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f89bf
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
jne 0x51f88c0
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x28], 0
je 0x51f8a48
lea ebp, [esi + 1]
cmp ebp, dword [esp + 0x10]
jl 0x51f89f2
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov ecx, dword [esp + 0x1c]
mov byte [esi + ebx], 0x3f
mov esi, ebp
mov ebp, dword [ecx + 0x28]
cmp byte [ebp], 0
je 0x51f8bc0
lea edx, [esi + 1]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x10]
jl 0x51f8a31
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov cl, byte [ebp]
inc dword [esp + 0x14]
mov byte [esi + ebx], cl
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x51f8a10
jmp 0x51f8bc0
cmp dword [eax + 0x1c], 0
je 0x51f8bc0
lea edx, [esi + 3]
cmp edx, dword [esp + 0x10]
jl 0x51f8a72
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov byte [esi + ebx], 0x3f
mov eax, dword [eax + 0x1c]
inc esi
cmp byte [eax], 0
mov dword [esp + 0x14], eax
je 0x51f8bc0
lea ebp, [esi + 3]
mov edi, eax
cmp ebp, dword [esp + 0x10]
jl 0x51f8ab1
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x14]
mov ebx, eax
mov al, byte [edi]
cmp al, 0x61
jl 0x51f8abf
cmp al, 0x7a
jle 0x51f8bad
cmp al, 0x41
jl 0x51f8acb
cmp al, 0x5a
jle 0x51f8bad
cmp al, 0x30
jl 0x51f8ad7
cmp al, 0x39
jle 0x51f8bad
cmp al, 0x2d
je 0x51f8bad
cmp al, 0x5f
je 0x51f8bad
cmp al, 0x2e
je 0x51f8bad
cmp al, 0x21
je 0x51f8bad
cmp al, 0x7e
je 0x51f8bad
cmp al, 0x2a
je 0x51f8bad
cmp al, 0x27
je 0x51f8bad
cmp al, 0x28
je 0x51f8bad
cmp al, 0x29
je 0x51f8bad
cmp al, 0x3b
je 0x51f8bad
cmp al, 0x2f
je 0x51f8bad
cmp al, 0x3f
je 0x51f8bad
cmp al, 0x3a
je 0x51f8bad
cmp al, 0x40
je 0x51f8bad
cmp al, 0x26
je 0x51f8bad
cmp al, 0x3d
je 0x51f8bad
cmp al, 0x2b
je 0x51f8bad
cmp al, 0x24
je 0x51f8bad
cmp al, 0x2c
je 0x51f8bad
cmp al, 0x5b
je 0x51f8bad
cmp al, 0x5d
je 0x51f8bad
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f8b7b
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f8bb7
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
jne 0x51f8a90
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x20], 0
je 0x51f8d40
lea edx, [esi + 3]
cmp edx, dword [esp + 0x10]
jl 0x51f8bee
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov byte [esi + ebx], 0x23
mov eax, dword [eax + 0x20]
inc esi
cmp byte [eax], 0
mov dword [esp + 0x14], eax
je 0x51f8d40
lea ebp, [esi + 3]
mov edi, eax
lea esp, [esp]
cmp ebp, dword [esp + 0x10]
jl 0x51f8c31
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
je 0x51f8d57
mov edi, dword [esp + 0x14]
mov ebx, eax
mov al, byte [edi]
cmp al, 0x61
jl 0x51f8c3f
cmp al, 0x7a
jle 0x51f8d2d
cmp al, 0x41
jl 0x51f8c4b
cmp al, 0x5a
jle 0x51f8d2d
cmp al, 0x30
jl 0x51f8c57
cmp al, 0x39
jle 0x51f8d2d
cmp al, 0x2d
je 0x51f8d2d
cmp al, 0x5f
je 0x51f8d2d
cmp al, 0x2e
je 0x51f8d2d
cmp al, 0x21
je 0x51f8d2d
cmp al, 0x7e
je 0x51f8d2d
cmp al, 0x2a
je 0x51f8d2d
cmp al, 0x27
je 0x51f8d2d
cmp al, 0x28
je 0x51f8d2d
cmp al, 0x29
je 0x51f8d2d
cmp al, 0x3b
je 0x51f8d2d
cmp al, 0x2f
je 0x51f8d2d
cmp al, 0x3f
je 0x51f8d2d
cmp al, 0x3a
je 0x51f8d2d
cmp al, 0x40
je 0x51f8d2d
cmp al, 0x26
je 0x51f8d2d
cmp al, 0x3d
je 0x51f8d2d
cmp al, 0x2b
je 0x51f8d2d
cmp al, 0x24
je 0x51f8d2d
cmp al, 0x2c
je 0x51f8d2d
cmp al, 0x5b
je 0x51f8d2d
cmp al, 0x5d
je 0x51f8d2d
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc edi
sar eax, 4
and ecx, 0x8000000f
mov dword [esp + 0x14], edi
jns 0x51f8cfb
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + ebx - 1], 0x25
inc ebp
cmp eax, 9
setle dl
dec dl
and dl, 7
add dl, 0x30
add dl, al
inc esi
mov byte [esi + ebx - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + ebx], al
inc esi
inc ebp
jmp 0x51f8d37
mov byte [esi + ebx], al
inc esi
inc ebp
inc edi
mov dword [esp + 0x14], edi
cmp byte [edi], 0
jne 0x51f8c10
cmp esi, dword [esp + 0x10]
jl 0x51f8d6d
push ebx
lea edi, [esp + 0x14]
call fcn.051f81a0
add esp, 4
test eax, eax
jne 0x51f8d6b
push ebx
call dword [0x53f2e48]
add esp, 4
pop esi
pop ebp
pop ebx
xor eax, eax
pop edi
add esp, 8
ret
mov ebx, eax
mov byte [esi + ebx], 0
pop esi
pop ebp
mov eax, ebx
pop ebx
pop edi
add esp, 8
ret