Function at 0x597f80
Capabilities:
Parse credit card information

Disassembly:
sub esp, 8
push ebp
mov ebp, dword [esp + 0x10]
test ebp, ebp
jne 0x597f93
xor eax, eax
pop ebp
add esp, 8
ret
push ebx
push esi
push edi
mov ebx, 0x50
push 0x51
mov dword [esp + 0x14], ebx
call dword [0x66e100]
mov edi, eax
add esp, 4
test edi, edi
jne 0x597fd5
call fcn.0057bd60
mov esi, eax
call fcn.0057bda0
mov eax, dword [eax]
mov ecx, dword [esi]
push str.xmlSaveUri:_out_of_memory_n
push eax
call ecx
add esp, 8
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 8
ret
mov eax, dword [ebp]
xor esi, esi
test eax, eax
je 0x598041
mov ebp, eax
cmp byte [ebp], 0
je 0x598038
cmp esi, ebx
jl 0x598004
add ebx, ebx
lea edx, [ebx + 1]
push edx
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov al, byte [ebp]
mov byte [esi + edi], al
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x597fe6
cmp esi, ebx
mov dword [esp + 0x10], ebx
jl 0x598038
add ebx, ebx
lea eax, [ebx + 1]
push eax
push edi
mov dword [esp + 0x18], ebx
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov ebp, dword [esp + 0x1c]
mov byte [esi + edi], 0x3a
inc esi
mov eax, dword [ebp + 4]
test eax, eax
je 0x59818a
mov ebx, eax
cmp byte [ebx], 0
je 0x598914
lea ebp, [esi + 3]
lea ebx, [ebx]
cmp ebp, dword [esp + 0x10]
jl 0x598086
mov eax, dword [esp + 0x10]
add eax, eax
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov al, byte [ebx]
cmp al, 0x3b
je 0x598176
cmp al, 0x2f
je 0x598176
cmp al, 0x3f
je 0x598176
cmp al, 0x3a
je 0x598176
cmp al, 0x40
je 0x598176
cmp al, 0x26
je 0x598176
cmp al, 0x3d
je 0x598176
cmp al, 0x2b
je 0x598176
cmp al, 0x24
je 0x598176
cmp al, 0x2c
je 0x598176
cmp al, 0x5b
je 0x598176
cmp al, 0x5d
je 0x598176
cmp al, 0x61
jl 0x5980f4
cmp al, 0x7a
jle 0x598176
cmp al, 0x41
jl 0x5980fc
cmp al, 0x5a
jle 0x598176
cmp al, 0x30
jl 0x598104
cmp al, 0x39
jle 0x598176
cmp al, 0x2d
je 0x598176
cmp al, 0x5f
je 0x598176
cmp al, 0x2e
je 0x598176
cmp al, 0x21
je 0x598176
cmp al, 0x7e
je 0x598176
cmp al, 0x2a
je 0x598176
cmp al, 0x27
je 0x598176
cmp al, 0x28
je 0x598176
cmp al, 0x29
je 0x598176
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc ebx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x598144
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x59817c
mov byte [esi + edi], al
inc esi
inc ebp
inc ebx
cmp byte [ebx], 0
jne 0x598060
jmp 0x598914
cmp dword [ebp + 0xc], 0
je 0x5983a6
lea eax, [esi + 3]
cmp eax, ebx
jl 0x5981b9
add ebx, ebx
lea ecx, [ebx + 1]
push ecx
push edi
mov dword [esp + 0x18], ebx
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov byte [esi + edi], 0x2f
inc esi
mov byte [esi + edi], 0x2f
mov ebp, dword [ebp + 0x10]
inc esi
test ebp, ebp
je 0x59830d
cmp byte [ebp], 0
mov dword [esp + 0x14], ebp
je 0x5982e3
lea ebp, [esi + 3]
nop
cmp ebp, ebx
jl 0x5981fe
add ebx, ebx
lea ecx, [ebx + 1]
push ecx
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov edx, dword [esp + 0x14]
mov al, byte [edx]
cmp al, 0x61
jl 0x598210
cmp al, 0x7a
jle 0x5982c9
cmp al, 0x41
jl 0x59821c
cmp al, 0x5a
jle 0x5982c9
cmp al, 0x30
jl 0x598228
cmp al, 0x39
jle 0x5982c9
cmp al, 0x2d
je 0x5982c9
cmp al, 0x5f
je 0x5982c9
cmp al, 0x2e
je 0x5982c9
cmp al, 0x21
je 0x5982c9
cmp al, 0x7e
je 0x5982c9
cmp al, 0x2a
je 0x5982c9
cmp al, 0x27
je 0x5982c9
cmp al, 0x28
je 0x5982c9
cmp al, 0x29
je 0x5982c9
cmp al, 0x3b
je 0x5982c9
cmp al, 0x3a
je 0x5982c9
cmp al, 0x26
je 0x5982c9
cmp al, 0x3d
je 0x5982c9
cmp al, 0x2b
je 0x5982c9
cmp al, 0x24
je 0x5982c9
cmp al, 0x2c
je 0x5982c9
inc dword [esp + 0x14]
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x598297
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x5982d2
mov byte [esi + edi], al
inc esi
inc ebp
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
cmp byte [ecx], 0
jne 0x5981e0
mov dword [esp + 0x10], ebx
lea ecx, [esi + 3]
cmp ecx, ebx
jl 0x598308
add ebx, ebx
lea edx, [ebx + 1]
push edx
push edi
mov dword [esp + 0x18], ebx
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x5987b0
mov edi, eax
mov byte [esi + edi], 0x40
inc esi
mov edx, dword [esp + 0x1c]
mov ebp, dword [edx + 0xc]
cmp byte [ebp], 0
je 0x598350
lea ebx, [ebx]
cmp esi, ebx
jl 0x59833e
add ebx, ebx
lea eax, [ebx + 1]
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov cl, byte [ebp]
mov byte [esi + edi], cl
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x598320
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x14], 0
jle 0x598534
lea edx, [esi + 0xa]
cmp edx, ebx
jl 0x598383
add ebx, ebx
lea eax, [ebx + 1]
push eax
push edi
mov dword [esp + 0x18], ebx
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x14]
push ecx
push 0x611504
sub ebx, esi
lea edx, [esi + edi]
push ebx
push edx
call fcn.005a0b6b
add esp, 0x10
add esi, eax
jmp 0x598534
cmp dword [ebp + 8], 0
je 0x598500
lea eax, [esi + 3]
cmp eax, ebx
jl 0x5983d5
add ebx, ebx
lea ecx, [ebx + 1]
push ecx
push edi
mov dword [esp + 0x18], ebx
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov byte [esi + edi], 0x2f
inc esi
mov byte [esi + edi], 0x2f
mov ebp, dword [ebp + 8]
inc esi
cmp byte [ebp], 0
mov dword [esp + 0x14], ebp
je 0x598534
lea ebp, [esi + 3]
cmp ebp, ebx
jl 0x598411
add ebx, ebx
lea ecx, [ebx + 1]
push ecx
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov edx, dword [esp + 0x14]
mov al, byte [edx]
cmp al, 0x61
jl 0x598423
cmp al, 0x7a
jle 0x5984e4
cmp al, 0x41
jl 0x59842f
cmp al, 0x5a
jle 0x5984e4
cmp al, 0x30
jl 0x59843b
cmp al, 0x39
jle 0x5984e4
cmp al, 0x2d
je 0x5984e4
cmp al, 0x5f
je 0x5984e4
cmp al, 0x2e
je 0x5984e4
cmp al, 0x21
je 0x5984e4
cmp al, 0x7e
je 0x5984e4
cmp al, 0x2a
je 0x5984e4
cmp al, 0x27
je 0x5984e4
cmp al, 0x28
je 0x5984e4
cmp al, 0x29
je 0x5984e4
cmp al, 0x24
je 0x5984e4
cmp al, 0x2c
je 0x5984e4
cmp al, 0x3b
je 0x5984e4
cmp al, 0x3a
je 0x5984e4
cmp al, 0x40
je 0x5984e4
cmp al, 0x26
je 0x5984e4
cmp al, 0x3d
je 0x5984e4
cmp al, 0x2b
je 0x5984e4
inc dword [esp + 0x14]
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x5984b2
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x5984ed
mov byte [esi + edi], al
inc esi
inc ebp
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
cmp byte [ecx], 0
jne 0x5983f3
mov dword [esp + 0x10], ebx
jmp 0x598534
cmp dword [ebp], 0
je 0x598534
lea ecx, [esi + 3]
cmp ecx, ebx
jl 0x59852a
lea eax, [ebx + ebx]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598945
mov edi, eax
mov byte [esi + edi], 0x2f
inc esi
mov byte [esi + edi], 0x2f
inc esi
mov ecx, dword [esp + 0x1c]
mov ebx, dword [ecx + 0x18]
test ebx, ebx
je 0x5986f4
mov edx, ecx
mov ecx, dword [edx]
test ecx, ecx
je 0x5985e6
cmp byte [ebx], 0x2f
jne 0x5985e6
mov al, byte [ebx + 1]
cmp al, 0x61
jl 0x598563
cmp al, 0x7a
jle 0x59856b
cmp al, 0x41
jl 0x5985e6
cmp al, 0x5a
jg 0x5985e6
cmp byte [ebx + 2], 0x3a
jne 0x5985e6
push str.file
push ecx
call fcn.00579a10
add esp, 8
test eax, eax
je 0x5985e6
mov ebp, dword [esp + 0x10]
lea eax, [esi + 3]
cmp eax, ebp
jl 0x5985cd
add ebp, ebp
lea ecx, [ebp + 1]
push ecx
push edi
mov dword [esp + 0x18], ebp
call dword [0x66e104]
mov edi, eax
add esp, 8
test edi, edi
jne 0x5985cd
call fcn.0057bd60
mov esi, eax
call fcn.0057bda0
mov edx, dword [eax]
mov eax, dword [esi]
push str.xmlSaveUri:_out_of_memory_n
push edx
call eax
add esp, 8
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 8
ret
mov cl, byte [ebx]
mov byte [esi + edi], cl
mov dl, byte [ebx + 1]
inc ebx
inc esi
mov byte [esi + edi], dl
mov al, byte [ebx + 1]
inc ebx
inc esi
mov byte [esi + edi], al
inc esi
inc ebx
jmp 0x5985ea
mov ebp, dword [esp + 0x10]
cmp byte [ebx], 0
je 0x5986f8
lea ebp, [esi + 3]
cmp ebp, dword [esp + 0x10]
jl 0x59861d
mov ecx, dword [esp + 0x10]
lea eax, [ecx + ecx]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov al, byte [ebx]
cmp al, 0x61
jl 0x59862b
cmp al, 0x7a
jle 0x5986e5
cmp al, 0x41
jl 0x598637
cmp al, 0x5a
jle 0x5986e5
cmp al, 0x30
jl 0x598643
cmp al, 0x39
jle 0x5986e5
cmp al, 0x2d
je 0x5986e5
cmp al, 0x5f
je 0x5986e5
cmp al, 0x2e
je 0x5986e5
cmp al, 0x21
je 0x5986e5
cmp al, 0x7e
je 0x5986e5
cmp al, 0x2a
je 0x5986e5
cmp al, 0x27
je 0x5986e5
cmp al, 0x28
je 0x5986e5
cmp al, 0x29
je 0x5986e5
cmp al, 0x2f
je 0x5986e5
cmp al, 0x3b
je 0x5986e5
cmp al, 0x40
je 0x5986e5
cmp al, 0x26
je 0x5986e5
cmp al, 0x3d
je 0x5986e5
cmp al, 0x2b
je 0x5986e5
cmp al, 0x24
je 0x5986e5
cmp al, 0x2c
je 0x5986e5
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc ebx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x5986b3
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x5986eb
mov byte [esi + edi], al
inc esi
inc ebp
inc ebx
cmp byte [ebx], 0
jne 0x5985f6
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
cmp dword [ebx + 0x28], 0
je 0x598787
lea ebx, [esi + 1]
cmp ebx, ebp
jl 0x59872b
lea eax, [ebp + ebp]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x5987b0
mov edi, eax
mov edx, dword [esp + 0x1c]
mov byte [esi + edi], 0x3f
mov ebp, dword [edx + 0x28]
cmp byte [ebp], 0
mov esi, ebx
je 0x598914
mov ebx, dword [esp + 0x10]
lea eax, [esi + 1]
mov dword [esp + 0x14], eax
lea ecx, [ecx]
cmp dword [esp + 0x14], ebx
jl 0x59876c
add ebx, ebx
lea ecx, [ebx + 1]
push ecx
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x5987b0
mov edi, eax
mov dl, byte [ebp]
inc dword [esp + 0x14]
mov byte [esi + edi], dl
inc ebp
inc esi
cmp byte [ebp], 0
jne 0x598750
mov dword [esp + 0x10], ebx
jmp 0x598914
cmp dword [ebx + 0x1c], 0
je 0x598914
lea edx, [esi + 3]
cmp edx, ebp
jl 0x5987de
lea eax, [ebp + ebp]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
jne 0x5987dc
call fcn.0057bd60
mov esi, eax
call fcn.0057bda0
mov eax, dword [eax]
mov ecx, dword [esi]
push str.xmlSaveUri:_out_of_memory_n
push eax
call ecx
push edi
call dword [0x66e0f8]
add esp, 0xc
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 8
ret
mov edi, eax
mov byte [esi + edi], 0x3f
mov ebx, dword [ebx + 0x1c]
inc esi
cmp byte [ebx], 0
je 0x598914
lea ebp, [esi + 3]
cmp ebp, dword [esp + 0x10]
jl 0x598819
mov edx, dword [esp + 0x10]
lea eax, [edx + edx]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov al, byte [ebx]
cmp al, 0x61
jl 0x598827
cmp al, 0x7a
jle 0x598905
cmp al, 0x41
jl 0x598833
cmp al, 0x5a
jle 0x598905
cmp al, 0x30
jl 0x59883f
cmp al, 0x39
jle 0x598905
cmp al, 0x2d
je 0x598905
cmp al, 0x5f
je 0x598905
cmp al, 0x2e
je 0x598905
cmp al, 0x21
je 0x598905
cmp al, 0x7e
je 0x598905
cmp al, 0x2a
je 0x598905
cmp al, 0x27
je 0x598905
cmp al, 0x28
je 0x598905
cmp al, 0x29
je 0x598905
cmp al, 0x3b
je 0x598905
cmp al, 0x2f
je 0x598905
cmp al, 0x3f
je 0x598905
cmp al, 0x3a
je 0x598905
cmp al, 0x40
je 0x598905
cmp al, 0x26
je 0x598905
cmp al, 0x3d
je 0x598905
cmp al, 0x2b
je 0x598905
cmp al, 0x24
je 0x598905
cmp al, 0x2c
je 0x598905
cmp al, 0x5b
je 0x598905
cmp al, 0x5d
je 0x598905
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc ebx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x5988d3
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x59890b
mov byte [esi + edi], al
inc esi
inc ebp
inc ebx
cmp byte [ebx], 0
jne 0x5987f2
mov ebx, dword [esp + 0x1c]
cmp dword [ebx + 0x20], 0
mov ebp, dword [esp + 0x10]
je 0x598aad
lea eax, [esi + 3]
cmp eax, ebp
jl 0x598973
add ebp, ebp
lea ecx, [ebp + 1]
push ecx
push edi
mov dword [esp + 0x18], ebp
call dword [0x66e104]
add esp, 8
test eax, eax
jne 0x598971
call fcn.0057bd60
mov esi, eax
call fcn.0057bda0
mov edx, dword [eax]
mov eax, dword [esi]
push str.xmlSaveUri:_out_of_memory_n
push edx
call eax
push edi
call dword [0x66e0f8]
add esp, 0xc
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 8
ret
mov edi, eax
mov byte [esi + edi], 0x23
mov ebx, dword [ebx + 0x20]
inc esi
cmp byte [ebx], 0
je 0x598aad
lea ebp, [esi + 3]
cmp ebp, dword [esp + 0x10]
jl 0x5989ae
mov ecx, dword [esp + 0x10]
lea eax, [ecx + ecx]
mov dword [esp + 0x10], eax
inc eax
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
je 0x598ac4
mov edi, eax
mov al, byte [ebx]
cmp al, 0x61
jl 0x5989bc
cmp al, 0x7a
jle 0x598a9a
cmp al, 0x41
jl 0x5989c8
cmp al, 0x5a
jle 0x598a9a
cmp al, 0x30
jl 0x5989d4
cmp al, 0x39
jle 0x598a9a
cmp al, 0x2d
je 0x598a9a
cmp al, 0x5f
je 0x598a9a
cmp al, 0x2e
je 0x598a9a
cmp al, 0x21
je 0x598a9a
cmp al, 0x7e
je 0x598a9a
cmp al, 0x2a
je 0x598a9a
cmp al, 0x27
je 0x598a9a
cmp al, 0x28
je 0x598a9a
cmp al, 0x29
je 0x598a9a
cmp al, 0x3b
je 0x598a9a
cmp al, 0x2f
je 0x598a9a
cmp al, 0x3f
je 0x598a9a
cmp al, 0x3a
je 0x598a9a
cmp al, 0x40
je 0x598a9a
cmp al, 0x26
je 0x598a9a
cmp al, 0x3d
je 0x598a9a
cmp al, 0x2b
je 0x598a9a
cmp al, 0x24
je 0x598a9a
cmp al, 0x2c
je 0x598a9a
cmp al, 0x5b
je 0x598a9a
cmp al, 0x5d
je 0x598a9a
movzx ecx, al
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
inc ebx
sar eax, 4
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x598a68
dec ecx
or ecx, 0xfffffff0
inc ecx
inc esi
mov byte [esi + edi - 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 + edi - 1], dl
inc ebp
cmp ecx, 9
setle al
dec al
and al, 7
add al, 0x30
add al, cl
mov byte [esi + edi], al
inc esi
inc ebp
jmp 0x598aa0
mov byte [esi + edi], al
inc esi
inc ebp
inc ebx
cmp byte [ebx], 0
jne 0x598987
mov ebp, dword [esp + 0x10]
cmp esi, ebp
jl 0x598af2
lea eax, [ebp + ebp + 1]
push eax
push edi
call dword [0x66e104]
add esp, 8
test eax, eax
jne 0x598af0
call fcn.0057bd60
mov esi, eax
call fcn.0057bda0
mov ecx, dword [eax]
mov edx, dword [esi]
push str.xmlSaveUri:_out_of_memory_n
push ecx
call edx
push edi
call dword [0x66e0f8]
add esp, 0xc
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 8
ret
mov edi, eax
mov byte [esi + edi], 0
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
add esp, 8
ret