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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14c
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x148], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
push ebx
push esi
xor esi, esi
push edi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x58], esi
mov dword [esp + 0x54], esi
cmp eax, esi
je 0x1e0f5eac
cmp ecx, esi
je 0x1e0f5eac
push eax
call sym.python27.dll_PyUnicodeUCS2_FromObject
add esp, 4
mov dword [esp + 0x5c], eax
cmp eax, esi
je 0x1e0f5ec9
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
lea ebx, [eax + 0x64]
mov dword [esp + 0x10], eax
mov eax, ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x4c], ebx
call fcn.1e0e6360
mov dword [esp + 0x48], eax
cmp eax, esi
je 0x1e0f5e12
mov edi, dword [eax + 0xc]
mov esi, dword [esp + 0x38]
mov eax, dword [esi + 4]
mov edx, dword [eax + 0x54]
and edx, 0x4000000
mov dword [esp + 0x34], edi
je 0x1e0f51ec
mov ecx, dword [esi + 8]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x3c], 0
jmp 0x1e0f51fc
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x3c], 0xfffffffe
mov ecx, dword [eax + 0x38]
test ecx, ecx
je 0x1e0f522a
cmp dword [ecx + 4], 0
je 0x1e0f522a
test edx, edx
jne 0x1e0f522a
cmp eax, sym.python27.dll_PyBaseString_Type
je 0x1e0f522a
push sym.python27.dll_PyBaseString_Type
push eax
call sym.python27.dll_PyType_IsSubtype
add esp, 8
test eax, eax
jne 0x1e0f522a
mov dword [esp + 0x54], esi
sub dword [esp + 0x10], 1
js 0x1e0f5bea
mov esi, dword [esp + 0x1c]
lea esp, [esp]
cmp word [esi], 0x25
je 0x1e0f529f
sub ebx, 1
mov dword [esp + 0x24], ebx
jns 0x1e0f528a
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x4c]
add ebx, 0x64
lea edx, [esp + 0x48]
add eax, ebx
push edx
mov dword [esp + 0x50], eax
call fcn.1e0e6510
add esp, 4
test eax, eax
jl 0x1e0f5df9
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 0xc]
sub eax, ebx
dec ebx
lea edi, [edx + eax*2]
mov dword [esp + 0x24], ebx
mov ax, word [esi]
mov word [edi], ax
add edi, 2
mov dword [esp + 0x34], edi
add esi, 2
jmp 0x1e0f5bdf
xor edi, edi
or eax, 0xffffffff
xor edx, edx
add esi, 2
cmp word [esi], 0x28
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], edi
jne 0x1e0f5391
mov ebx, 1
mov ecx, ebx
cmp dword [esp + 0x54], edi
je 0x1e0f5c7c
add esi, 2
sub dword [esp + 0x10], ebx
mov edx, esi
sub dword [esp + 0x10], ebx
js 0x1e0f5c94
movzx eax, word [esi]
cmp ax, 0x29
jne 0x1e0f52f8
sub ecx, ebx
jmp 0x1e0f5300
cmp ax, 0x28
jne 0x1e0f5300
add ecx, ebx
add esi, 2
cmp ecx, edi
mov dword [esp + 0x1c], esi
jg 0x1e0f52e1
sub esi, edx
sar esi, 1
dec esi
push esi
push edx
call sym.python27.dll_PyUnicodeUCS2_FromUnicode
mov esi, eax
add esp, 8
test esi, esi
je 0x1e0f5df9
cmp dword [esp + 0x58], 0
je 0x1e0f5348
mov eax, dword [esp + 0x38]
add dword [eax], 0xffffffff
jne 0x1e0f5340
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
mov dword [esp + 0x58], 0
mov eax, dword [esp + 0x54]
push esi
push eax
call sym.python27.dll_PyObject_GetItem
add esp, 8
add dword [esi], 0xffffffff
mov edi, eax
mov dword [esp + 0x38], edi
jne 0x1e0f536d
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0x18]
push esi
call edx
add esp, 4
test edi, edi
je 0x1e0f5df9
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x3c], 0xfffffffe
mov ecx, dword [esp + 0x10]
sub ecx, 1
js 0x1e0f5d10
mov edi, edi
movzx ebx, word [esi]
movzx eax, bx
sub eax, 0x20
add esi, 2
cmp eax, 0x10
ja case.0x1e0f53b8.33
movzx eax, byte [eax + 0x1e0f5ef8]
jmp dword [eax*4 + 0x1e0f5ee0]
or edx, 1
jmp 0x1e0f53d6
or edx, 2
jmp 0x1e0f53d6
or edx, 4
jmp 0x1e0f53d6
or edx, 8
jmp 0x1e0f53d6
or edx, 0x10
sub ecx, 1
jns 0x1e0f53a0
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
cmp bx, 0x2a
jne 0x1e0f5488
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
cmp ecx, edx
mov eax, ecx
jge 0x1e0f5c1b
inc ecx
mov dword [esp + 0x3c], ecx
test edx, edx
jge 0x1e0f5412
mov eax, dword [esp + 0x38]
jmp 0x1e0f5420
mov ecx, dword [esp + 0x38]
push eax
push ecx
call sym.python27.dll_PyTuple_GetItem
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
je 0x1e0f5df9
mov edx, dword [eax + 4]
test dword [edx + 0x54], 0x800000
je 0x1e0f5cad
push eax
call sym.python27.dll_PyInt_AsSsize_t
add esp, 4
mov dword [esp + 0x2c], eax
cmp eax, 0xffffffff
jne 0x1e0f545e
mov ecx, dword [sym.python27.dll__PyThreadState_Current]
cmp dword [ecx + 0x28], 0
jne 0x1e0f5df9
test eax, eax
jge 0x1e0f546d
or dword [esp + 0x18], 1
neg eax
mov dword [esp + 0x2c], eax
sub dword [esp + 0x10], 1
js 0x1e0f5d10
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
add eax, 2
mov dword [esp + 0x1c], eax
jmp 0x1e0f54f4
lea eax, [ebx - 0x30]
cmp ax, 9
ja 0x1e0f54f8
movzx edi, bx
sub edi, 0x30
sub dword [esp + 0x10], 1
mov dword [esp + 0x2c], edi
js 0x1e0f54f8
jmp 0x1e0f54a8
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
add eax, 2
lea ecx, [ebx - 0x30]
mov dword [esp + 0x1c], eax
cmp cx, 9
ja 0x1e0f54f8
movzx esi, bx
mov ecx, 0x8000002f
sub ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jg 0x1e0f5cc6
sub dword [esp + 0x10], 1
lea ecx, [edi + edi*4]
lea edi, [esi + ecx*2 - 0x30]
mov dword [esp + 0x2c], edi
jns 0x1e0f54a4
mov edx, dword [esp + 0x18]
cmp bx, 0x2e
jne 0x1e0f55d4
mov esi, 1
sub dword [esp + 0x10], esi
mov dword [esp + 0x30], 0
js 0x1e0f5d10
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
add eax, 2
mov dword [esp + 0x1c], eax
cmp bx, 0x2a
jne 0x1e0f5640
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
mov edx, eax
jge 0x1e0f5c34
add eax, esi
mov dword [esp + 0x3c], eax
test ecx, ecx
jge 0x1e0f5557
mov edx, dword [esp + 0x38]
mov dword [esp + 0x14], edx
jmp 0x1e0f5569
mov eax, dword [esp + 0x38]
push edx
push eax
call sym.python27.dll_PyTuple_GetItem
add esp, 8
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0
je 0x1e0f5df9
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
test dword [edx + 0x54], 0x800000
je 0x1e0f5cde
mov eax, ecx
push eax
call sym.python27.dll__PyInt_AsInt
add esp, 4
mov dword [esp + 0x30], eax
cmp eax, 0xffffffff
jne 0x1e0f55ac
mov ecx, dword [sym.python27.dll__PyThreadState_Current]
cmp dword [ecx + 0x28], 0
jne 0x1e0f5df9
test eax, eax
jge 0x1e0f55b8
mov dword [esp + 0x30], 0
sub dword [esp + 0x10], esi
js 0x1e0f5d10
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
mov edx, dword [esp + 0x18]
add eax, 2
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x10], 0
jl 0x1e0f5d10
cmp bx, 0x68
je 0x1e0f55f1
cmp bx, 0x6c
je 0x1e0f55f1
cmp bx, 0x4c
jne 0x1e0f560a
sub dword [esp + 0x10], 1
js 0x1e0f5d10
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
add eax, 2
mov dword [esp + 0x1c], eax
cmp bx, 0x25
je 0x1e0f56df
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
mov esi, eax
jge 0x1e0f5c4d
inc eax
mov dword [esp + 0x3c], eax
test ecx, ecx
jge 0x1e0f56be
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
jmp 0x1e0f56d4
lea eax, [ebx - 0x30]
cmp ax, 9
ja 0x1e0f55d4
movzx eax, bx
sub eax, 0x30
sub dword [esp + 0x10], esi
mov dword [esp + 0x30], eax
js 0x1e0f5d10
lea ecx, [ecx]
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax]
add eax, 2
lea ecx, [ebx - 0x30]
mov dword [esp + 0x1c], eax
cmp cx, 9
ja 0x1e0f55d4
movzx esi, bx
mov ecx, 0x8000002f
sub ecx, esi
mov eax, 0x66666667
imul ecx
mov eax, dword [esp + 0x30]
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp eax, ecx
jg 0x1e0f5cf7
sub dword [esp + 0x10], 1
lea edx, [eax + eax*4]
lea eax, [esi + edx*2 - 0x30]
mov dword [esp + 0x30], eax
js 0x1e0f5d10
mov edx, dword [esp + 0x18]
jmp 0x1e0f5660
mov edx, dword [esp + 0x38]
push esi
push edx
call sym.python27.dll_PyTuple_GetItem
mov edx, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0
je 0x1e0f5df9
movzx eax, bx
lea ecx, [eax - 0x25]
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], 0x20
cmp ecx, 0x53
ja case.0x1e0f5705.38
movzx ecx, byte [ecx + 0x1e0f5f24]
jmp dword [ecx*4 + 0x1e0f5f0c]
mov eax, 0x25
lea edx, [esp + 0x60]
mov dword [esp + 0x28], edx
mov word [esp + 0x60], ax
lea edi, [eax - 0x24]
jmp 0x1e0f59b6
mov eax, dword [esp + 0x14]
cmp dword [eax + 4], 0x1e2322f0
jne 0x1e0f5744
cmp bx, 0x73
jne 0x1e0f575c
inc dword [eax]
mov dword [esp + 0x20], eax
jmp 0x1e0f57c5
cmp bx, 0x73
jne 0x1e0f575c
mov ecx, dword [esp + 0x14]
push ecx
call sym.python27.dll_PyObject_Unicode
mov esi, eax
mov dword [esp + 0x24], esi
jmp 0x1e0f576c
mov edx, dword [esp + 0x14]
push edx
call sym.python27.dll_PyObject_Repr
mov esi, eax
mov dword [esp + 0x24], eax
add esp, 4
test esi, esi
je 0x1e0f5df9
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x54]
test eax, 0x10000000
jne 0x1e0f57c5
test eax, 0x8000000
je 0x1e0f5d28
mov ecx, dword [esi + 8]
push str.strict
push 0
push ecx
lea edx, [esi + 0x14]
push edx
call sym.python27.dll_PyUnicodeUCS2_Decode
add esp, 0x10
add dword [esi], 0xffffffff
mov edi, eax
jne 0x1e0f57b9
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x18]
push esi
call ecx
add esp, 4
mov dword [esp + 0x20], edi
test edi, edi
je 0x1e0f5df9
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0xc]
mov edi, dword [eax + 8]
mov dword [esp + 0x28], edx
jl 0x1e0f59b6
cmp edi, dword [esp + 0x30]
jle 0x1e0f59b6
mov edi, dword [esp + 0x30]
jmp 0x1e0f59b6
cmp bx, 0x69
jne 0x1e0f57fc
mov ebx, 0x64
cmp dword [esp + 0x14], 0
je 0x1e0f5859
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x1e0f5859
cmp dword [eax + 0x48], 0
jne 0x1e0f581d
cmp dword [eax + 0x50], 0
je 0x1e0f5859
test dword [ecx + 0x54], 0x1800000
jne 0x1e0f584f
mov edi, dword [esp + 0x14]
push edi
call sym.python27.dll_PyNumber_Int
mov esi, eax
add esp, 4
test esi, esi
jne 0x1e0f5881
call sym.python27.dll_PyErr_Clear
push edi
call sym.python27.dll_PyNumber_Long
mov edx, dword [esp + 0x1c]
add esp, 4
mov esi, eax
jmp 0x1e0f5855
mov esi, dword [esp + 0x14]
inc dword [esi]
test esi, esi
jne 0x1e0f5885
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 0xc]
mov edx, dword [sym.python27.dll_PyExc_TypeError]
push eax
movsx ecx, bl
push ecx
push str.___c_format:_a_number_is_required__not__.200s
push edx
call sym.python27.dll_PyErr_Format
add esp, 0x10
jmp 0x1e0f5df9
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x54]
test eax, 0x800000
je 0x1e0f58ce
lea eax, [esp + 0x60]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
push esi
push eax
push edx
lea edx, [esp + 0x6c]
movzx ecx, bx
push edx
call fcn.1e0f4f10
add esp, 0x10
add dword [esi], 0xffffffff
mov edi, eax
jne 0x1e0f58c4
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x18]
push esi
call ecx
add esp, 4
test edi, edi
jl 0x1e0f5df9
jmp 0x1e0f591c
test eax, 0x1000000
je 0x1e0f5c65
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
push eax
push ecx
movzx edx, bx
push esi
call fcn.1e0f4e70
add esp, 0xc
add dword [esi], 0xffffffff
mov edi, eax
mov dword [esp + 0x20], edi
jne 0x1e0f5906
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x18]
push esi
call eax
add esp, 4
test edi, edi
je 0x1e0f5df9
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x28], ecx
mov edi, dword [eax + 8]
test byte [esp + 0x18], 0x10
je 0x1e0f592b
mov dword [esp + 0x50], 0x30
mov ecx, dword [esp + 0x28]
movzx eax, word [ecx]
cmp ax, 0x2d
je 0x1e0f59a9
cmp ax, 0x2b
je 0x1e0f59a9
mov al, byte [esp + 0x18]
test al, 2
je 0x1e0f5997
mov dword [esp + 0x40], 0x2b
jmp 0x1e0f59b6
mov ecx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x18]
call fcn.1e0f4de0
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x1e0f5df9
mov edx, dword [eax + 0xc]
mov dword [esp + 0x28], edx
jmp 0x1e0f5919
lea eax, [esp + 0x60]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
lea esi, [esp + 0x60]
call fcn.1e0f5040
mov edi, eax
test edi, edi
jl 0x1e0f5df9
jmp 0x1e0f59b6
movsx eax, al
and eax, 4
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x40], eax
jmp 0x1e0f59b6
add dword [esp + 0x28], 2
movzx edx, ax
mov dword [esp + 0x40], edx
dec edi
mov eax, dword [esp + 0x2c]
cmp eax, edi
jge 0x1e0f59c4
mov eax, edi
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x24]
xor edx, edx
cmp word [esp + 0x40], dx
mov esi, ecx
setne dl
sub esi, edx
cmp esi, eax
jge 0x1e0f5a1f
mov esi, dword [esp + 0x4c]
sub esi, ecx
mov ecx, dword [esp + 0x10]
lea eax, [eax + ecx + 0x64]
add esi, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x4c], esi
js 0x1e0f5d51
lea edx, [esp + 0x48]
push edx
mov eax, esi
call fcn.1e0e6510
add esp, 4
test eax, eax
jl 0x1e0f5d87
mov eax, dword [esp + 0x48]
sub esi, dword [esp + 0x24]
mov ecx, dword [eax + 0xc]
lea esi, [ecx + esi*2]
jmp 0x1e0f5a23
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x40]
test ax, ax
je 0x1e0f5a4d
cmp word [esp + 0x50], 0x20
je 0x1e0f5a3a
mov word [esi], ax
add esi, 2
mov eax, dword [esp + 0x2c]
dec dword [esp + 0x24]
cmp eax, edi
jle 0x1e0f5a51
dec eax
mov dword [esp + 0x2c], eax
jmp 0x1e0f5a51
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
and ecx, 8
mov dword [esp + 0x34], ecx
je 0x1e0f5aa8
cmp bx, 0x78
je 0x1e0f5a6a
cmp bx, 0x58
jne 0x1e0f5aa8
cmp word [esp + 0x50], 0x20
mov edx, dword [esp + 0x28]
je 0x1e0f5a8f
movzx ecx, word [edx]
mov word [esi], cx
movzx ecx, word [edx + 2]
add edx, 2
add esi, 2
mov word [esi], cx
add esi, 2
add edx, 2
sub dword [esp + 0x24], 2
sub eax, 2
mov dword [esp + 0x2c], eax
jns 0x1e0f5aa3
xor eax, eax
mov dword [esp + 0x2c], eax
sub edi, 2
jmp 0x1e0f5aac
mov edx, dword [esp + 0x28]
cmp eax, edi
jle 0x1e0f5ad8
test byte [esp + 0x18], 1
jne 0x1e0f5ad8
jmp 0x1e0f5ac0
mov cx, word [esp + 0x50]
dec dword [esp + 0x24]
mov word [esi], cx
dec eax
add esi, 2
cmp eax, edi
jg 0x1e0f5ac0
mov dword [esp + 0x2c], eax
cmp word [esp + 0x50], 0x20
jne 0x1e0f5b1b
mov ecx, dword [esp + 0x40]
test cx, cx
je 0x1e0f5aef
mov word [esi], cx
add esi, 2
cmp dword [esp + 0x34], 0
je 0x1e0f5b1b
cmp bx, 0x78
je 0x1e0f5b02
cmp bx, 0x58
jne 0x1e0f5b1b
movzx ecx, word [edx]
mov word [esi], cx
movzx ecx, word [edx + 2]
add edx, 2
add esi, 2
mov word [esi], cx
add esi, 2
add edx, 2
lea ecx, [edi + edi]
cmp ecx, 0x10
jb 0x1e0f5b37
lea eax, [edi + edi]
push eax
push edx
push esi
call sub.MSVCR90.dll_memcpy
mov eax, dword [esp + 0x38]
add esp, 0xc
jmp 0x1e0f5b5b
test ecx, ecx
jbe 0x1e0f5b5b
sub edx, esi
mov dword [esp + 0x40], edx
lea edx, [edi + edi]
mov ecx, esi
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x40]
mov dl, byte [edx + ecx]
mov byte [ecx], dl
inc ecx
sub dword [esp + 0x34], 1
jne 0x1e0f5b4a
sub dword [esp + 0x24], edi
lea ecx, [edi + edi]
add esi, ecx
dec eax
cmp eax, edi
mov dword [esp + 0x34], esi
jl 0x1e0f5b9f
sub eax, edi
inc eax
mov dword [esp + 0x34], eax
mov ecx, eax
mov eax, 0x20
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
mov edi, esi
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov eax, dword [esp + 0x34]
sub dword [esp + 0x24], eax
lea eax, [esi + eax*2]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x54], 0
je 0x1e0f5bba
mov ecx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ecx
jge 0x1e0f5bba
cmp bx, 0x25
jne 0x1e0f5d74
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1e0f5bd3
add dword [eax], 0xffffffff
jne 0x1e0f5bd3
mov edx, dword [eax + 4]
push eax
mov eax, dword [edx + 0x18]
call eax
add esp, 4
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
sub dword [esp + 0x10], 1
jns 0x1e0f5240
mov edx, dword [esp + 0x44]
cmp dword [esp + 0x3c], edx
jge 0x1e0f5de2
cmp dword [esp + 0x54], 0
jne 0x1e0f5de2
mov eax, dword [sym.python27.dll_PyExc_TypeError]
push str.not_all_arguments_converted_during_string_formatting
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov ecx, dword [sym.python27.dll_PyExc_TypeError]
push str.not_enough_arguments_for_format_string
push ecx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov edx, dword [sym.python27.dll_PyExc_TypeError]
push str.not_enough_arguments_for_format_string
push edx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov eax, dword [sym.python27.dll_PyExc_TypeError]
push str.not_enough_arguments_for_format_string
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
add dword [esi], 0xffffffff
jne 0x1e0f5859
mov edx, dword [ecx + 0x18]
push esi
call edx
add esp, 4
jmp 0x1e0f5859
mov eax, dword [sym.python27.dll_PyExc_TypeError]
push str.format_requires_a_mapping
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov ecx, dword [sym.python27.dll_PyExc_ValueError]
push str.incomplete_format_key
push ecx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov edx, dword [sym.python27.dll_PyExc_TypeError]
push str._wants_int
push edx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov eax, dword [sym.python27.dll_PyExc_ValueError]
push str.width_too_big
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov ecx, dword [sym.python27.dll_PyExc_TypeError]
push str._wants_int
push ecx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov edx, dword [sym.python27.dll_PyExc_ValueError]
push str.prec_too_big
push edx
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov eax, dword [sym.python27.dll_PyExc_ValueError]
push str.incomplete_format
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
add dword [esi], 0xffffffff
jne 0x1e0f5d39
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0x18]
push esi
call edx
add esp, 4
mov eax, dword [sym.python27.dll_PyExc_TypeError]
push str._s_argument_has_non_string_str__
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
jmp 0x1e0f5df9
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1e0f5d6a
add dword [eax], 0xffffffff
jne 0x1e0f5d6a
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
call sym.python27.dll_PyErr_NoMemory
jmp 0x1e0f5df9
mov eax, dword [sym.python27.dll_PyExc_TypeError]
push str.not_all_arguments_converted_during_string_formatting
push eax
call sym.python27.dll_PyErr_SetString
add esp, 8
cmp dword [esp + 0x20], 0
je 0x1e0f5df9
mov eax, dword [esp + 0x20]
add dword [eax], 0xffffffff
jne 0x1e0f5df9
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
jmp 0x1e0f5df9
lea eax, [ebx - 0x1f]
movsx ecx, bl
cmp ax, 0x5f
jbe 0x1e0f5db6
mov ecx, 0x3f
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x1c]
sub eax, dword [edx + 0xc]
sub eax, 2
sar eax, 1
push eax
movzx eax, bx
push eax
push ecx
mov ecx, dword [sym.python27.dll_PyExc_ValueError]
push str.unsupported_format_character__c__0x_x__at_index__zd
push ecx
call sym.python27.dll_PyErr_Format
add esp, 0x14
jmp 0x1e0f5df9
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x48]
sub eax, ebx
push ecx
call fcn.1e0e6510
add esp, 4
test eax, eax
jge 0x1e0f5e62
mov eax, dword [esp + 0x48]
test eax, eax
je 0x1e0f5e12
add dword [eax], 0xffffffff
jne 0x1e0f5e12
mov edx, dword [eax + 4]
push eax
mov eax, dword [edx + 0x18]
call eax
add esp, 4
mov eax, dword [esp + 0x5c]
add dword [eax], 0xffffffff
jne 0x1e0f5e27
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
cmp dword [esp + 0x58], 0
je 0x1e0f5ec9
mov eax, dword [esp + 0x38]
add dword [eax], 0xffffffff
jne 0x1e0f5ec9
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x148]
xor ecx, esp
call fcn.1e148908
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x58], 0
je 0x1e0f5e7e
mov eax, dword [esp + 0x38]
add dword [eax], 0xffffffff
jne 0x1e0f5e7e
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
mov eax, dword [esp + 0x5c]
add dword [eax], 0xffffffff
jne 0x1e0f5e93
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x18]
push eax
call edx
add esp, 4
mov eax, dword [esp + 0x48]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x148]
xor ecx, esp
call fcn.1e148908
mov esp, ebp
pop ebp
ret
mov eax, dword [sym.python27.dll_PyExc_SystemError]
push 0x20bd
push str...Objectsunicodeobject.c
push str._s:_d:_bad_argument_to_internal_function
push eax
call sym.python27.dll_PyErr_Format
add esp, 0x10
mov ecx, dword [esp + 0x154]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.1e148908
mov esp, ebp
pop ebp
ret