Function at 0x61e24657
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xdc
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
test byte [eax + 0x15], 2
je 0x61e239c4
mov eax, dword [ebx]
mov byte [ebp - 0xa2], 1
add ebx, 4
mov dword [ebp - 0xa8], eax
jmp 0x61e239d5
mov dword [ebp - 0xa8], 0
mov byte [ebp - 0xa2], 0
mov dword [ebp - 0x88], 0
movsx eax, byte [edi]
test eax, eax
je case.default.0x61e23c78
cmp eax, 0x25
je 0x61e23a24
mov esi, edi
inc esi
mov al, byte [esi]
test al, al
je 0x61e239fc
cmp al, 0x25
jne 0x61e239f1
mov eax, esi
mov dword [esp + 4], edi
sub eax, edi
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
cmp byte [esi], 0
je case.default.0x61e23c78
mov dword [ebp - 0x88], edi
mov edi, esi
movsx edx, byte [edi + 1]
lea esi, [edi + 1]
test edx, edx
jne 0x61e23a4f
mov eax, dword [ebp + 8]
mov dword [esp + 8], 1
mov dword [esp + 4], 0x61e98b46
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
jmp case.default.0x61e23c78
mov byte [ebp - 0xae], 0
mov byte [ebp - 0xb0], 0
mov byte [ebp - 0xa1], 0
mov byte [ebp - 0xaf], 0
mov byte [ebp - 0x98], 0
mov byte [ebp - 0xad], 0
lea eax, [edx - 0x20]
cmp eax, 0x10
ja case.0x61e23a81.34
jmp dword [eax*4 + 0x61e98b4c]
mov byte [ebp - 0xad], 1
jmp 0x61e23ac5
mov byte [ebp - 0x98], 0x20
jmp 0x61e23ac5
mov byte [ebp - 0xaf], 1
jmp 0x61e23ac5
mov byte [ebp - 0xa1], 1
jmp 0x61e23ac5
mov byte [ebp - 0xb0], 1
jmp 0x61e23ac5
mov byte [ebp - 0xae], 0x2c
jmp 0x61e23ac5
mov byte [ebp - 0x98], 0x2b
inc esi
movsx edx, byte [esi]
test edx, edx
jne 0x61e23a79
xor ecx, ecx
jmp 0x61e23b50
xor ecx, ecx
cmp edx, 0x2a
jne 0x61e23b3b
cmp byte [ebp - 0xa2], 0
je 0x61e23af4
mov eax, dword [ebp - 0xa8]
call sym._getIntArg
mov dword [ebp - 0x90], eax
jmp 0x61e23aff
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x90], eax
cmp dword [ebp - 0x90], 0
jns 0x61e23b34
cmp dword [ebp - 0x90], 0x80000000
je 0x61e23b23
neg dword [ebp - 0x90]
mov byte [ebp - 0xad], 1
jmp 0x61e23b34
mov byte [ebp - 0xad], 1
mov dword [ebp - 0x90], 0
movsx edx, byte [esi + 1]
inc esi
jmp 0x61e23b5c
lea eax, [edx - 0x30]
cmp eax, 9
ja 0x61e23b50
imul eax, ecx, 0xa
inc esi
lea ecx, [edx + eax - 0x30]
movsx edx, byte [esi]
jmp 0x61e23b3b
and ecx, 0x7fffffff
mov dword [ebp - 0x90], ecx
cmp edx, 0x2e
jne 0x61e23c01
movsx edx, byte [esi + 1]
cmp edx, 0x2a
je 0x61e23b7b
lea eax, [esi + 1]
mov dword [ebp - 0xac], eax
xor eax, eax
jmp 0x61e23bd4
cmp byte [ebp - 0xa2], 0
je 0x61e23b97
mov eax, dword [ebp - 0xa8]
call sym._getIntArg
mov dword [ebp - 0x8c], eax
jmp 0x61e23ba2
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x8c], 0
lea eax, [esi + 2]
movsx edx, byte [esi + 2]
mov dword [ebp - 0xac], eax
jns 0x61e23c11
mov ecx, dword [ebp - 0x8c]
mov eax, 0xffffffff
neg ecx
cmp dword [ebp - 0x8c], 0x80000000
cmovne eax, ecx
jmp 0x61e23bf9
lea ecx, [edx - 0x30]
cmp ecx, 9
ja 0x61e23bf4
inc dword [ebp - 0xac]
imul eax, eax, 0xa
mov esi, dword [ebp - 0xac]
lea eax, [edx + eax - 0x30]
movsx edx, byte [esi]
jmp 0x61e23bd4
and eax, 0x7fffffff
mov dword [ebp - 0x8c], eax
jmp 0x61e23c11
mov dword [ebp - 0xac], esi
mov dword [ebp - 0x8c], 0xffffffff
xor eax, eax
cmp edx, 0x6c
jne 0x61e23c46
mov eax, dword [ebp - 0xac]
movsx edx, byte [eax + 1]
cmp edx, 0x6c
je 0x61e23c31
inc dword [ebp - 0xac]
mov al, 1
jmp 0x61e23c46
mov eax, dword [ebp - 0xac]
movsx edx, byte [eax + 2]
add eax, 2
mov dword [ebp - 0xac], eax
mov al, 2
mov dword [ebp - 0xb4], 0
imul ecx, dword [ebp - 0xb4], 6
movsx esi, byte [ecx + 0x61ea9100]
cmp edx, esi
jne 0x61e23c88
movzx edx, byte [ecx + 0x61ea9103]
cmp dl, 0x10
mov byte [ebp - 0xa0], dl
ja case.default.0x61e23c78
jmp dword [edx*4 + 0x61e98b90]
mov byte [ebp - 0xae], 0
jmp case.0x61e23c78.16
inc dword [ebp - 0xb4]
cmp dword [ebp - 0xb4], 0x17
jne 0x61e23c50
jmp case.default.0x61e23c78
mov byte [ebp - 0xae], 0
mov al, 1
imul edx, dword [ebp - 0xb4], 6
test byte [edx + 0x61ea9102], 1
je 0x61e23d24
cmp byte [ebp - 0xa2], 0
je 0x61e23ccb
mov eax, dword [ebp - 0xa8]
call sym._getIntArg
jmp 0x61e23ce9
test al, al
je 0x61e23cdd
cmp al, 2
mov eax, dword [ebx]
jne 0x61e23cdf
mov edx, dword [ebx + 4]
add ebx, 8
jmp 0x61e23ce9
mov eax, dword [ebx]
cdq
add ebx, 4
test edx, edx
jns 0x61e23d12
jmp 0x61e23d02
test edx, edx
jns 0x61e23d12
lea ecx, [edx - 0x80000000]
xor esi, esi
mov edi, 0x80000000
or ecx, eax
je 0x61e24cc2
neg eax
adc edx, 0
mov esi, eax
neg edx
mov edi, edx
jmp 0x61e24cc2
mov esi, eax
mov al, byte [ebp - 0x98]
mov edi, edx
mov byte [ebp - 0xa1], al
jmp 0x61e23d5c
cmp byte [ebp - 0xa2], 0
je 0x61e23d3e
mov eax, dword [ebp - 0xa8]
call sym._getIntArg
mov esi, eax
mov edi, edx
jmp 0x61e23d55
test al, al
mov esi, dword [ebx]
je 0x61e23d50
cmp al, 2
jne 0x61e23d50
mov edi, dword [ebx + 4]
add ebx, 8
jmp 0x61e23d55
xor edi, edi
add ebx, 4
mov byte [ebp - 0xa1], 0
mov dl, byte [ebp - 0xaf]
mov eax, edi
or eax, esi
mov al, 0
cmove edx, eax
mov byte [ebp - 0xaf], dl
cmp byte [ebp - 0xb0], 0
je 0x61e23da3
xor eax, eax
cmp byte [ebp - 0xa1], 0
mov ecx, dword [ebp - 0x90]
setne al
sub ecx, eax
cmp dword [ebp - 0x8c], ecx
mov eax, ecx
cmovge eax, dword [ebp - 0x8c]
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x8c], 0x24
jle 0x61e23e16
mov eax, dword [ebp - 0x8c]
mov ecx, 3
cdq
idiv ecx
mov dword [ebp - 0x88], eax
cdq
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x84], edx
cdq
add eax, 0xa
adc edx, 0
add eax, dword [ebp - 0x88]
adc edx, dword [ebp - 0x84]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], edx
call sym._sqlite3Malloc
test eax, eax
jne 0x61e23e08
mov eax, dword [ebp + 8]
mov byte [eax + 0x14], 7
mov dword [eax + 8], 0
jmp case.default.0x61e23c78
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x98], eax
jmp 0x61e23e28
lea eax, [ebp - 0x5e]
mov dword [ebp - 0x98], 0
mov ecx, 0x46
cmp byte [ebp - 0xa0], 0xf
lea eax, [eax + ecx - 1]
mov dword [ebp - 0xc8], eax
mov dword [ebp - 0x88], eax
jne 0x61e23ee5
mov dword [esp + 8], 0xa
mov dword [esp + 0xc], 0
mov dword [esp], esi
mov dword [esp + 4], edi
call dbg.__umoddi3
cmp edx, 0
ja 0x61e23ebe
cmp eax, 3
mov dword [ebp - 0x88], eax
ja 0x61e23ebe
mov dword [esp + 8], 0xa
mov dword [esp + 0xc], 0
mov dword [esp], esi
mov dword [esp + 4], edi
call dbg.__udivdi3
mov dword [esp + 8], 0xa
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__umoddi3
mov ecx, dword [ebp - 0x88]
xor eax, 1
or eax, edx
mov eax, 0
cmovne eax, ecx
jmp 0x61e23ec0
xor eax, eax
add eax, eax
mov ecx, dword [ebp - 0xc8]
mov dl, byte [eax + 0x61ea2275]
mov al, byte [eax + str.thstndrd]
mov byte [ecx - 1], dl
mov edx, ecx
mov byte [ecx - 2], al
sub edx, 2
mov dword [ebp - 0x88], edx
imul eax, dword [ebp - 0xb4], 6
mov dword [ebp - 0x9c], 0
movzx edx, byte [eax + 0x61ea9104]
add eax, 0x61ea9100
movzx eax, byte [eax + 1]
add edx, str.0123456789ABCDEF0123456789abcdef
mov dword [ebp - 0xb8], edx
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x9c]
mov dword [esp], esi
mov dword [esp + 4], edi
dec dword [ebp - 0x88]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call dbg.__umoddi3
mov edx, dword [ebp - 0xb8]
mov al, byte [edx + eax]
mov edx, dword [ebp - 0x88]
mov byte [edx], al
mov eax, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x9c]
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call dbg.__udivdi3
mov esi, eax
mov eax, edx
mov edi, edx
or eax, esi
jne 0x61e23f18
mov eax, dword [ebp - 0xc8]
sub eax, dword [ebp - 0x88]
cmp dword [ebp - 0x8c], eax
jle 0x61e23f9f
dec dword [ebp - 0x88]
inc eax
mov esi, dword [ebp - 0x88]
mov byte [esi], 0x30
jmp 0x61e23f85
cmp byte [ebp - 0xae], 0
je 0x61e23feb
dec eax
mov ecx, 3
cdq
idiv ecx
xor ecx, ecx
sub dword [ebp - 0x88], eax
lea edi, [edx + 1]
test eax, eax
je 0x61e23feb
mov esi, dword [ebp - 0x88]
add esi, ecx
dec edi
mov dl, byte [esi + eax]
mov esi, dword [ebp - 0x88]
mov byte [esi + ecx], dl
jne 0x61e23fe8
mov dl, byte [ebp - 0xae]
dec eax
mov edi, 3
mov byte [esi + ecx + 1], dl
inc ecx
inc ecx
jmp 0x61e23fbc
cmp byte [ebp - 0xa1], 0
je 0x61e2400c
mov esi, dword [ebp - 0x88]
mov al, byte [ebp - 0xa1]
mov byte [esi - 1], al
mov eax, esi
dec eax
mov dword [ebp - 0x88], eax
cmp byte [ebp - 0xaf], 0
je 0x61e24043
imul eax, dword [ebp - 0xb4], 6
movzx eax, byte [eax + 0x61ea9105]
test al, al
je 0x61e24043
add eax, 0x61ea918c
mov dl, byte [eax]
test dl, dl
je 0x61e24043
dec dword [ebp - 0x88]
inc eax
mov esi, dword [ebp - 0x88]
mov byte [esi], dl
jmp 0x61e2402c
mov edi, dword [ebp - 0xc8]
mov esi, ebx
sub edi, dword [ebp - 0x88]
jmp 0x61e24c1b
cmp byte [ebp - 0xa2], 0
je 0x61e2408b
mov eax, dword [ebp - 0xa8]
mov esi, dword [ebp - 0xa8]
fldz
mov eax, dword [eax + 4]
cmp dword [esi], eax
jle 0x61e24087
fstp st(0)
mov edx, dword [esi + 8]
lea ecx, [eax + 1]
mov dword [esi + 4], ecx
mov eax, dword [edx + eax*4]
call sym._sqlite3VdbeRealValue
mov esi, ebx
jmp 0x61e24090
lea esi, [ebx + 8]
fld qword [ebx]
cmp dword [ebp - 0x8c], 0xffffffff
fldz
mov eax, 6
cmovne eax, dword [ebp - 0x8c]
fucomi st(1)
mov dword [ebp - 0x8c], eax
jbe 0x61e240be
fxch st(1)
fchs
fxch st(1)
mov byte [ebp - 0xae], 0x2d
jmp 0x61e240ca
mov al, byte [ebp - 0x98]
mov byte [ebp - 0xae], al
cmp byte [ebp - 0xa0], 3
jne 0x61e240e6
cmp dword [ebp - 0x8c], 0
setg al
cmp al, 1
adc dword [ebp - 0x8c], 0xffffffff
mov eax, dword [ebp - 0x8c]
fld dword [0x61ea960c]
and eax, 0xfff
test eax, eax
je 0x61e24104
dec eax
fmul qword [0x61ea9690]
jmp 0x61e240f7
cmp byte [ebp - 0xa0], 1
jne 0x61e24113
fadd st(2), st(0)
fxch st(1)
jmp 0x61e24115
fxch st(1)
fstp xword [ebp - 0xc8]
fstp qword [ebp - 0x98]
fst qword [esp]
fstp xword [ebp - 0x88]
call sym._sqlite3IsNaN
test eax, eax
jne 0x61e24bea
fld xword [ebp - 0x88]
fld xword [ebp - 0xc8]
fxch st(1)
fucomi st(1)
fstp st(1)
fld qword [ebp - 0x98]
jbe 0x61e24270
fld1
xor edi, edi
fld st(0)
fld qword [0x61ea9698]
fld st(2)
cmp edi, 0x15e
fmul st(1)
jg 0x61e24184
fxch st(5)
fucomi st(5)
jb 0x61e2418a
fstp st(3)
fxch st(1)
fxch st(2)
fxch st(4)
fxch st(2)
fxch st(1)
add edi, 0x64
jmp 0x61e24161
fstp st(0)
fstp st(0)
jmp 0x61e2418e
fstp st(5)
fstp st(0)
fld dword [0x61ea96a0]
fld st(2)
cmp edi, 0x15e
fmul st(1)
jg 0x61e241b7
fxch st(5)
fucomi st(5)
jb 0x61e241bd
fstp st(3)
fxch st(1)
fxch st(2)
fxch st(4)
fxch st(2)
fxch st(1)
add edi, 0xa
jmp 0x61e24194
fstp st(0)
fstp st(0)
jmp 0x61e241c1
fstp st(5)
fstp st(0)
fld dword [0x61ea9614]
fld st(2)
cmp edi, 0x15e
fmul st(1)
fld st(1)
jg 0x61e241f4
fxch st(6)
fucomi st(1)
jb 0x61e241fc
fstp st(4)
fstp st(5)
fxch st(2)
fxch st(1)
fxch st(3)
fxch st(4)
fxch st(1)
fxch st(4)
fxch st(3)
fxch st(1)
fxch st(2)
inc edi
jmp 0x61e241c7
fstp st(2)
fstp st(0)
fxch st(4)
jmp 0x61e24200
fstp st(2)
fstp st(0)
fdivrp st(2)
fld qword [0x61ea96a8]
fucomi st(2)
jbe 0x61e2421b
fxch st(2)
fmul dword [0x61ea96a4]
fxch st(2)
sub edi, 8
jmp 0x61e24208
fstp st(0)
fucomi st(1)
jbe 0x61e2422a
fxch st(1)
fmul st(3)
fxch st(1)
dec edi
jmp 0x61e2421d
fstp st(0)
fstp st(2)
fxch st(1)
cmp edi, 0x15e
jle 0x61e24274
fstp st(0)
fstp st(0)
mov al, byte [ebp - 0xae]
mov dword [ebp - 0x98], 0
test al, al
mov byte [ebp - 0x5e], al
setne al
cmp byte [ebp - 0xae], 1
movzx eax, al
mov dword [ebp + eax - 0x5e], 0x666e49
sbb edi, edi
add edi, 4
jmp 0x61e24649
fxch st(1)
xor edi, edi
cmp byte [ebp - 0xa0], 1
je 0x61e242f6
faddp st(1)
fld dword [0x61ea9614]
fxch st(1)
fucomi st(1)
fstp st(1)
jb 0x61e24294
fmul qword [0x61ea9690]
inc edi
cmp byte [ebp - 0xa0], 3
jne 0x61e242ce
mov al, byte [ebp - 0xaf]
xor eax, 1
cmp edi, 0xfffffffc
mov byte [ebp - 0xb8], al
jl 0x61e242e3
cmp dword [ebp - 0x8c], edi
jl 0x61e242e3
sub dword [ebp - 0x8c], edi
mov dword [ebp - 0xc8], edi
mov byte [ebp - 0xa0], 1
jmp 0x61e24319
cmp byte [ebp - 0xa0], 2
mov al, byte [ebp - 0xa1]
mov byte [ebp - 0xb8], al
jne 0x61e2430c
mov byte [ebp - 0xa0], 2
mov dword [ebp - 0xc8], 0
jmp 0x61e24319
fstp st(1)
mov al, byte [ebp - 0xa1]
mov dword [ebp - 0xc8], edi
mov byte [ebp - 0xb8], al
jmp 0x61e24319
mov dword [ebp - 0xc8], edi
mov byte [ebp - 0xa0], 3
cmp dword [ebp - 0xc8], 0
mov ecx, 0
mov eax, dword [ebp - 0x8c]
cmovns ecx, dword [ebp - 0xc8]
cdq
mov ebx, ecx
sar ebx, 0x1f
add eax, ecx
mov ecx, dword [ebp - 0x90]
adc edx, ebx
mov ebx, ecx
sar ebx, 0x1f
add ecx, eax
adc ebx, edx
cmp ebx, 0
jl 0x61e24388
jg 0x61e24357
cmp ecx, 0x37
jbe 0x61e24388
mov eax, ecx
mov edx, ebx
add eax, 0xf
adc edx, 0
fstp xword [ebp - 0xd8]
call sym._sqlite3Malloc
test eax, eax
mov dword [ebp - 0x88], eax
je 0x61e23df5
mov dword [ebp - 0x98], eax
fld xword [ebp - 0xd8]
jmp 0x61e2439b
lea eax, [ebp - 0x5e]
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x88], eax
movzx eax, byte [ebp - 0xa1]
mov dl, byte [ebp - 0xaf]
or dl, byte [ebp - 0xa1]
imul eax, eax, 0xa
add eax, 0x10
cmp dword [ebp - 0x8c], 0
mov dword [ebp - 0xd8], eax
setg al
or edx, eax
cmp byte [ebp - 0xae], 0
mov eax, dword [ebp - 0x88]
mov byte [ebp - 0xaf], dl
je 0x61e243ea
mov edx, dword [ebp - 0x88]
mov bl, byte [ebp - 0xae]
inc eax
mov byte [edx], bl
mov ebx, dword [ebp - 0xc8]
test ebx, ebx
lea edx, [eax + ebx + 1]
jns 0x61e24400
lea edx, [eax + 1]
mov byte [eax], 0x30
jmp 0x61e24454
inc eax
cmp dword [ebp - 0xd8], 0
mov cl, 0x30
jle 0x61e24443
fnstcw word [ebp - 0x72]
mov cx, word [ebp - 0x72]
dec dword [ebp - 0xd8]
or ch, 0xc
mov word [ebp - 0x74], cx
fld st(0)
fldcw word [ebp - 0x74]
fistp dword [ebp - 0x78]
fldcw word [ebp - 0x72]
mov ecx, dword [ebp - 0x78]
mov dword [ebp - 0xc8], ecx
add ecx, 0x30
fisub dword [ebp - 0xc8]
fmul dword [0x61ea9614]
cmp eax, edx
mov byte [eax - 1], cl
jne 0x61e24400
mov dword [ebp - 0xc8], 0xffffffff
cmp byte [ebp - 0xaf], 0
je 0x61e24461
mov byte [edx], 0x2e
inc edx
mov eax, dword [ebp - 0xc8]
mov ebx, edx
sub ebx, dword [ebp - 0xc8]
inc eax
mov ecx, eax
test ecx, ecx
je 0x61e2447e
mov byte [ebx + ecx - 1], 0x30
inc ecx
jmp 0x61e24472
sub edx, eax
add eax, dword [ebp - 0x8c]
mov ebx, edx
mov ecx, eax
sub ecx, ebx
add ecx, edx
test ecx, ecx
jle 0x61e244da
inc ebx
cmp dword [ebp - 0xd8], 0
mov cl, 0x30
jle 0x61e244d5
fnstcw word [ebp - 0x72]
mov cx, word [ebp - 0x72]
dec dword [ebp - 0xd8]
or ch, 0xc
mov word [ebp - 0x74], cx
fld st(0)
fldcw word [ebp - 0x74]
fistp dword [ebp - 0x78]
fldcw word [ebp - 0x72]
mov ecx, dword [ebp - 0x78]
mov dword [ebp - 0x8c], ecx
add ecx, 0x30
fisub dword [ebp - 0x8c]
fmul dword [0x61ea9614]
mov byte [ebx - 1], cl
jmp 0x61e24488
fstp st(0)
test eax, eax
mov ecx, 0
mov bl, byte [ebp - 0xb8]
cmovns ecx, eax
add ecx, edx
test byte [ebp - 0xaf], bl
je 0x61e2451b
mov al, byte [ecx - 1]
cmp al, 0x30
jne 0x61e24503
dec ecx
mov byte [ecx], 0
jmp 0x61e244f6
cmp al, 0x2e
jne 0x61e2451b
cmp byte [ebp - 0xa1], 0
je 0x61e24516
mov byte [ecx], 0x30
inc ecx
jmp 0x61e2451b
mov byte [ecx - 1], 0
dec ecx
cmp byte [ebp - 0xa0], 2
jne 0x61e24590
imul eax, dword [ebp - 0xb4], 6
test edi, edi
movzx eax, byte [eax + 0x61ea9104]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [ecx], al
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
jns 0x61e24551
mov ebx, eax
mov byte [ecx + 1], 0x2d
neg edi
jmp 0x61e24558
lea ebx, [ecx + 2]
mov byte [ecx + 1], 0x2b
cmp edi, 0x63
jle 0x61e24578
mov eax, edi
mov ecx, 0x64
mov ebx, dword [ebp - 0x8c]
cdq
idiv ecx
lea ebx, [ebx + 1]
add eax, 0x30
mov edi, edx
mov byte [ebx - 1], al
mov eax, edi
mov ecx, 0xa
cdq
idiv ecx
lea ecx, [ebx + 2]
add eax, 0x30
add edx, 0x30
mov byte [ebx], al
mov byte [ebx + 1], dl
mov al, byte [ebp - 0xad]
mov edi, ecx
sub edi, dword [ebp - 0x88]
mov byte [ecx], 0
xor eax, 1
test byte [ebp - 0xb0], al
je 0x61e24c1b
cmp dword [ebp - 0x90], edi
jle 0x61e24c1b
mov edx, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x88]
mov eax, dword [ebp - 0x90]
sub edx, edi
sub ecx, edx
cmp eax, edx
jl 0x61e245e5
mov bl, byte [ecx + eax]
mov edi, dword [ebp - 0x88]
mov byte [edi + eax], bl
dec eax
jmp 0x61e245d2
cmp byte [ebp - 0xae], 0
mov eax, 0
setne cl
movzx ecx, cl
add ecx, dword [ebp - 0x88]
cmp eax, edx
je 0x61e24608
mov byte [ecx + eax], 0x30
inc eax
jmp 0x61e245fd
mov edi, dword [ebp - 0x90]
jmp 0x61e24c1b
cmp byte [ebp - 0xa2], 0
mov esi, ebx
jne 0x61e24c05
mov eax, dword [ebx]
lea esi, [ebx + 4]
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x10]
mov dword [eax], edx
jmp 0x61e24c05
mov byte [ebp - 0x5e], 0x25
mov esi, ebx
mov dword [ebp - 0x98], 0
mov edi, 1
lea eax, [ebp - 0x5e]
mov dword [ebp - 0x88], eax
jmp 0x61e24c1b
cmp byte [ebp - 0xa2], 0
je 0x61e246b4
mov eax, dword [ebp - 0xa8]
call sym._getTextArg
test eax, eax
je 0x61e246ae
mov dl, byte [eax]
mov edi, 1
mov byte [ebp - 0x5e], dl
and edx, 0xc0
cmp edx, 0xc0
jne 0x61e24759
mov dl, byte [eax + edi]
mov ecx, edx
and ecx, 0xc0
add ecx, 0xffffff80
jne 0x61e24759
inc edi
cmp edi, 4
mov byte [ebp + edi - 0x5f], dl
jne 0x61e2468b
jmp 0x61e24759
mov byte [ebp - 0x5e], 0
jmp 0x61e246c3
mov eax, dword [ebx]
lea edx, [ebx + 4]
cmp eax, 0x7f
ja 0x61e246cd
mov byte [ebp - 0x5e], al
mov ebx, edx
mov edi, 1
jmp 0x61e24759
cmp eax, 0x7ff
mov ecx, eax
ja 0x61e246f1
shr ecx, 6
and eax, 0x3f
mov ebx, edx
sub ecx, 0x40
add eax, 0xffffff80
mov edi, 2
mov byte [ebp - 0x5e], cl
mov byte [ebp - 0x5d], al
jmp 0x61e24759
cmp eax, 0xffff
ja 0x61e24721
shr ecx, 0xc
mov ebx, edx
mov edi, 3
sub ecx, 0x20
mov byte [ebp - 0x5e], cl
mov ecx, eax
and eax, 0x3f
shr ecx, 6
add eax, 0xffffff80
and ecx, 0x3f
mov byte [ebp - 0x5c], al
add ecx, 0xffffff80
mov byte [ebp - 0x5d], cl
jmp 0x61e24759
shr ecx, 0x12
mov ebx, edx
mov edi, 4
and ecx, 7
sub ecx, 0x10
mov byte [ebp - 0x5e], cl
mov ecx, eax
shr ecx, 0xc
and ecx, 0x3f
add ecx, 0xffffff80
mov byte [ebp - 0x5d], cl
mov ecx, eax
and eax, 0x3f
shr ecx, 6
add eax, 0xffffff80
and ecx, 0x3f
mov byte [ebp - 0x5b], al
add ecx, 0xffffff80
mov byte [ebp - 0x5c], cl
cmp dword [ebp - 0x8c], 1
jle 0x61e24949
mov eax, dword [ebp - 0x90]
sub eax, dword [ebp - 0x8c]
inc eax
cmp eax, 1
mov dword [ebp - 0x90], eax
jle 0x61e247a9
cmp byte [ebp - 0xad], 0
jne 0x61e247a9
dec eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_appendchar
mov dword [ebp - 0x90], 0
dec dword [ebp - 0x8c]
je 0x61e24949
lea eax, [ebp - 0x5e]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
jmp 0x61e247a9
cmp byte [ebp - 0xa2], 0
je 0x61e24800
mov eax, dword [ebp - 0xa8]
mov esi, ebx
call sym._getTextArg
test eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x98], 0
jne 0x61e248c7
jmp 0x61e248af
mov eax, dword [ebx]
lea esi, [ebx + 4]
mov dword [ebp - 0x98], 0
test eax, eax
mov dword [ebp - 0x88], eax
je 0x61e248af
cmp byte [ebp - 0xa0], 6
jne 0x61e248c7
mov eax, dword [ebp + 8]
cmp dword [eax + 0x10], 0
jne 0x61e248bb
cmp dword [eax + 0xc], 0
je 0x61e248bb
cmp dword [ebp - 0x90], 0
jne 0x61e248bb
mov eax, dword [ebp - 0x8c]
shr eax, 0x1f
je 0x61e248bb
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x98], eax
mov eax, dword [ebp + 8]
cmp byte [eax + 0x14], 0
jne 0x61e2492d
mov edi, dword [ebp - 0x88]
mov dword [eax + 4], edi
mov eax, dword [eax]
mov edx, edi
call sym._sqlite3DbMallocSize
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0x88]
or ecx, 0xffffffff
mov dword [ebx + 8], eax
mov al, byte [ebp - 0xa2]
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 8]
mov ebx, ecx
not ebx
mov ecx, ebx
or byte [eax + 0x15], 4
dec ecx
and ecx, 0x7fffffff
mov dword [eax + 0x10], ecx
jmp 0x61e24c05
mov dword [ebp - 0x88], 0x61e984ec
jmp 0x61e248c7
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x98], eax
cmp dword [ebp - 0x8c], 0xffffffff
je 0x61e2492d
xor edi, edi
cmp byte [ebp - 0xa1], 0
je 0x61e24923
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x88]
test eax, eax
jne 0x61e248fa
sub edi, dword [ebp - 0x88]
mov byte [ebp - 0xa1], 1
jmp 0x61e24965
mov dl, byte [edi]
test dl, dl
je 0x61e248eb
inc edi
cmp dl, 0xbf
jbe 0x61e24913
mov dl, byte [edi]
and edx, 0xffffffc0
cmp dl, 0x80
jne 0x61e24913
inc edi
jmp 0x61e24906
dec eax
jmp 0x61e248e7
mov eax, dword [ebp - 0x88]
cmp byte [eax + edi], 0
je 0x61e24965
inc edi
cmp dword [ebp - 0x8c], edi
jg 0x61e24916
jmp 0x61e24965
mov edi, dword [ebp - 0x88]
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ebx, ecx
not ebx
lea edi, [ebx - 1]
and edi, 0x7fffffff
jmp 0x61e24965
lea eax, [ebp - 0x5e]
mov esi, ebx
mov dword [ebp - 0x98], 0
mov byte [ebp - 0xa1], 1
mov dword [ebp - 0x88], eax
cmp dword [ebp - 0x90], 0
jle 0x61e24c1b
cmp byte [ebp - 0xa1], 0
lea eax, [edi - 1]
je 0x61e24c1b
test eax, eax
js 0x61e24c1b
mov ebx, dword [ebp - 0x88]
dec eax
movsx edx, byte [ebx + eax + 1]
and edx, 0xc0
add edx, 0xffffff80
sete dl
movzx edx, dl
add dword [ebp - 0x90], edx
jmp 0x61e24982
cmp byte [ebp - 0xa0], 0xe
setne byte [ebp - 0xc8]
mov al, byte [ebp - 0xc8]
cmp byte [ebp - 0xa2], 0
lea eax, [eax + eax*4 + 0x22]
mov byte [ebp - 0xc8], al
je 0x61e249e7
mov eax, dword [ebp - 0xa8]
call sym._getTextArg
mov dword [ebp - 0x88], eax
jmp 0x61e249f2
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x88], eax
mov ecx, dword [ebp - 0x88]
test ecx, ecx
jne 0x61e24a10
cmp byte [ebp - 0xa0], 0xa
mov edx, 0x61e98b36
mov ecx, str.NULL
cmovne ecx, edx
xor edi, edi
xor esi, esi
cmp dword [ebp - 0x8c], 0
jne 0x61e24a57
cmp dword [ebp - 0x88], 0
setne dl
cmp byte [ebp - 0xa0], 0xa
sete al
and edx, eax
lea eax, [esi + edi + 3]
mov byte [ebp - 0xa0], dl
cmp eax, 0x46
jg 0x61e24aa3
lea eax, [ebp - 0x5e]
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x88], eax
jmp 0x61e24ac9
mov al, byte [ecx + esi]
test al, al
je 0x61e24a1d
xor edx, edx
cmp byte [ebp - 0xc8], al
sete dl
add edi, edx
cmp byte [ebp - 0xa1], 0
je 0x61e24a97
mov edx, eax
and edx, 0xc0
cmp edx, 0xc0
jne 0x61e24a97
movsx edx, byte [ecx + esi + 1]
and edx, 0xc0
add edx, 0xffffff80
jne 0x61e24a97
inc esi
jmp 0x61e24a84
inc esi
dec dword [ebp - 0x8c]
jmp 0x61e24a14
cdq
mov dword [ebp - 0x8c], ecx
call sym._sqlite3Malloc
test eax, eax
mov dword [ebp - 0x88], eax
je 0x61e23df5
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x98], eax
xor edi, edi
cmp byte [ebp - 0xa0], 0
je 0x61e24ae7
mov edi, dword [ebp - 0x88]
mov al, byte [ebp - 0xc8]
mov byte [edi], al
mov edi, 1
mov edx, ecx
add esi, ecx
cmp esi, edx
je 0x61e24b27
lea eax, [edi + 1]
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x8c], eax
mov al, byte [edx]
cmp byte [ebp - 0xc8], al
mov byte [ecx + edi], al
jne 0x61e24b1e
mov al, byte [ebp - 0xc8]
mov byte [ecx + edi + 1], al
lea eax, [edi + 2]
mov dword [ebp - 0x8c], eax
inc edx
mov edi, dword [ebp - 0x8c]
jmp 0x61e24aeb
cmp byte [ebp - 0xa0], 0
je 0x61e24b40
mov esi, dword [ebp - 0x88]
mov al, byte [ebp - 0xc8]
mov byte [esi + edi], al
inc edi
mov eax, dword [ebp - 0x88]
mov esi, ebx
mov byte [eax + edi], 0
jmp 0x61e24965
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x61e23c78
mov eax, dword [ebx]
lea esi, [ebx + 4]
test eax, eax
je 0x61e24c05
mov edx, dword [eax + 4]
test edx, edx
je 0x61e24c05
mov dword [esp + 8], edx
mov eax, dword [eax]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
jmp 0x61e24c05
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x61e23c78
imul eax, dword [ebx + 4], 0x48
lea esi, [ebx + 8]
add eax, dword [ebx]
mov ebx, eax
mov eax, dword [eax + 0xc]
test eax, eax
je 0x61e24bd6
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_appendall
mov eax, dword [ebp + 8]
mov dword [esp + 8], 1
mov dword [esp + 4], 0x61e98b48
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
mov eax, dword [ebx + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_appendall
jmp 0x61e24c05
mov dword [ebp - 0x98], 0
mov edi, 3
mov dword [ebp - 0x88], 0x61e98b42
jmp 0x61e24c1b
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x90], 0
xor edi, edi
mov ebx, dword [ebp - 0x90]
sub ebx, edi
test ebx, ebx
jle 0x61e24c82
cmp byte [ebp - 0xad], 0
jne 0x61e24c47
mov eax, dword [ebp + 8]
mov dword [esp + 8], 0x20
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_appendchar
mov eax, dword [ebp - 0x88]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
cmp byte [ebp - 0xad], 0
je 0x61e24c9b
mov eax, dword [ebp + 8]
mov dword [esp + 8], 0x20
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_appendchar
jmp 0x61e24c9b
mov eax, dword [ebp - 0x88]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.sqlite3.dll_sqlite3_str_append
cmp dword [ebp - 0x98], 0
je 0x61e24cb4
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x98]
mov eax, dword [eax]
call sym._sqlite3DbFree
mov edi, dword [ebp - 0xac]
mov ebx, esi
inc edi
jmp 0x61e239df
mov byte [ebp - 0xa1], 0x2d
jmp 0x61e23d71
add esp, 0xdc
pop ebx
pop esi
pop edi
pop ebp
ret