Function at 0x40cfc1
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x20], 9
mov esi, edx
xor ecx, ecx
or ebx, 0xffffffff
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], ecx
mov edx, dword [edi + 0x18]
mov dword [ebp - 0x28], edx
mov dword [ebp - 0xc], edx
movzx eax, byte [edx]
cmp eax, 0x5b
ja 0x40d2fb
je 0x40d2ab
sub eax, 0x24
je 0x40d292
sub eax, 4
je 0x40d087
dec eax
sub eax, 1
je 0x40d393
sub eax, 1
je 0x40d393
sub eax, 3
je 0x40d02f
sub eax, 0x11
je 0x40d393
jmp case.default.0x40d3d0
lea esi, [edx + 1]
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 4]
mov dword [ebp - 8], esi
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x18], ecx
je 0x40d056
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
pop ecx
xor ecx, ecx
xor edx, edx
cmp dword [edi + 0x30], ecx
mov ecx, edi
setne dl
add edx, 3
call fcn.0040c009
cmp dword [ebp - 0x18], 0
je 0x40d6a3
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
jmp 0x40d5ea
lea esi, [edx + 1]
cmp byte [esi], 0x3f
jne 0x40d21e
mov al, byte [edx + 2]
cmp al, 0x3a
jne 0x40d0da
mov ecx, dword [edi + 0x34]
lea eax, [edx + 3]
mov edx, dword [ebp - 0x18]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10], ecx
mov ecx, edi
mov dword [edi + 0x18], eax
call fcn.0040dbe6
test eax, eax
jne 0x40d0d2
mov eax, dword [edi + 0x18]
mov dword [ebp - 0xc], eax
push 0x29
lea edx, [ebp - 0xc]
mov ecx, edi
call fcn.0040c17e
pop ecx
test eax, eax
je 0x40d2f0
or eax, 0xffffffff
jmp 0x40d771
cmp al, 0x3d
je 0x40d185
cmp al, 0x21
je 0x40d187
cmp al, 0x3c
jne 0x40d17b
lea esi, [edx + 3]
mov al, byte [esi]
mov byte [ebp - 4], al
cmp al, 0x3d
je 0x40d164
cmp al, 0x21
je 0x40d164
mov dword [ebp - 0xc], esi
lea eax, [ebp - 0xc]
lea esi, [edi + 0x5c]
push eax
mov ecx, esi
call fcn.0040cc62
pop ecx
test eax, eax
je 0x40d122
push str.invalid_group_name
jmp 0x40d336
mov edx, esi
mov ecx, edi
call fcn.0040cf52
test eax, eax
jle 0x40d139
push str.duplicate_group_name
jmp 0x40d336
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d13e
sub ecx, edx
mov edx, esi
lea eax, [ecx + 1]
push eax
lea ecx, [edi + 0x44]
call fcn.00401153
mov esi, dword [ebp - 0xc]
mov dword [edi + 0x3c], 1
jmp 0x40d22e
xor eax, eax
cmp byte [ebp - 4], 0x21
sete al
mov dword [ebp - 0x1c], eax
xor eax, eax
inc eax
add edx, 4
mov dword [ebp - 0x14], eax
jmp 0x40d198
push str.invalid_group
jmp 0x40d336
cmp al, 0x21
push 0
pop eax
sete al
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], eax
add edx, 3
mov eax, ecx
mov dword [ebp - 0x18], edx
cmp dword [edi + 0x28], ecx
jne 0x40d1ad
test eax, eax
jne 0x40d1ad
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x1c]
push ecx
mov ecx, edi
lea edx, [edx + 0x17]
call fcn.0040c01d
mov edx, dword [ebp - 0x14]
mov esi, eax
mov eax, dword [ebp - 0x18]
pop ecx
mov ecx, edi
mov dword [edi + 0x18], eax
call fcn.0040dbe6
test eax, eax
jne 0x40d0d2
mov eax, dword [edi + 0x18]
lea edx, [ebp - 0xc]
push 0x29
mov ecx, edi
mov dword [ebp - 0xc], eax
call fcn.0040c17e
pop ecx
test eax, eax
jne 0x40d0d2
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0xa
mov ecx, edi
call fcn.00401153
cmp dword [edi + 0xc], 0
pop ecx
jne 0x40d0d2
mov ecx, dword [edi + 4]
mov eax, dword [edi]
sub ecx, esi
sub ecx, 4
mov dword [esi + eax], ecx
jmp 0x40d2f0
mov byte [ebp - 4], cl
lea edx, [ebp - 4]
push 1
lea ecx, [edi + 0x44]
call fcn.00401153
pop ecx
mov ecx, dword [edi + 0x34]
mov dword [ebp - 0x10], ecx
cmp ecx, 0xff
jl 0x40d247
push str.too_many_captures
jmp 0x40d336
mov edx, dword [ebp - 0x18]
lea eax, [ecx + 1]
mov ebx, dword [edi + 4]
push ecx
mov ecx, edi
mov dword [edi + 0x34], eax
lea edx, [edx + 0xb]
call fcn.0040c086
pop ecx
mov dword [edi + 0x18], esi
mov ecx, edi
mov esi, dword [ebp - 0x18]
mov edx, esi
call fcn.0040dbe6
test eax, eax
jne 0x40d0d2
mov ecx, dword [ebp - 0x10]
mov eax, dword [edi + 0x18]
push ecx
push 0xc
pop edx
sub edx, esi
mov dword [ebp - 0xc], eax
mov ecx, edi
call fcn.0040c086
pop ecx
jmp 0x40d0bd
mov byte [ebp - 4], 6
lea esi, [edx + 1]
mov ecx, edi
push 1
lea edx, [ebp - 4]
call fcn.00401153
pop ecx
jmp 0x40d76c
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10], eax
test esi, esi
je 0x40d2c9
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
pop ecx
lea edx, [ebp - 0xc]
mov ecx, edi
call fcn.0040c9b0
test eax, eax
jne 0x40d0d2
test esi, esi
je 0x40d2f0
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
pop ecx
mov esi, dword [ebp - 0xc]
mov dword [ebp - 8], esi
jmp 0x40d6a3
sub eax, 0x5c
je 0x40d3a3
sub eax, 1
je 0x40d321
sub eax, 1
je 0x40d39a
sub eax, 0x1d
je 0x40d32c
dec eax
sub eax, 1
jne case.default.0x40d3d0
cmp dword [edi + 0x28], ecx
je case.default.0x40d3d0
jmp 0x40d331
cmp dword [edi + 0x28], ecx
je 0x40d343
push str.syntax_error
push edi
call fcn.0040c0dd
pop ecx
pop ecx
jmp 0x40d771
inc edx
mov al, byte [edx]
cmp al, 0x30
jb case.default.0x40d3d0
cmp al, 0x39
ja case.default.0x40d3d0
mov dword [ebp - 0x14], edx
lea ecx, [ebp - 0x14]
xor edx, edx
inc edx
call fcn.0040c100
mov eax, dword [ebp - 0x14]
cmp byte [eax], 0x2c
jne 0x40d38a
inc eax
mov dword [ebp - 0x14], eax
mov cl, byte [eax]
cmp cl, 0x30
jb 0x40d38a
cmp cl, 0x39
ja 0x40d38a
xor edx, edx
lea ecx, [ebp - 0x14]
inc edx
call fcn.0040c100
mov eax, dword [ebp - 0x14]
cmp byte [eax], 0x7d
jne 0x40d5f0
push str.nothing_to_repeat
jmp 0x40d336
mov byte [ebp - 4], 5
jmp 0x40d296
lea esi, [edx + 1]
mov bl, byte [esi]
movzx eax, bl
mov dword [ebp - 8], esi
cmp eax, 0x42
ja 0x40d4e9
je 0x40db1f
add eax, 0xffffffd0
cmp eax, dword [ebp - 0x20]
ja case.default.0x40d3d0
movzx eax, byte [eax + 0x40db45]
jmp dword [eax*4 + 0x40db3d]
lea esi, [edx + 2]
mov dword [ebp - 0x14], ecx
mov al, byte [esi]
mov dword [ebp - 8], esi
cmp dword [edi + 0x28], ecx
je 0x40d401
cmp al, 0x30
jb 0x40d614
cmp al, 0x39
ja 0x40d614
push str.invalid_decimal_escape_in_regular_expression
jmp 0x40d336
cmp al, 0x30
jb 0x40d614
cmp al, 0x37
ja 0x40d614
movzx edx, al
sub edx, 0x30
inc esi
mov al, byte [esi]
mov dword [ebp - 0x14], edx
mov dword [ebp - 8], esi
cmp al, 0x30
jb 0x40d614
cmp al, 0x37
ja 0x40d614
movzx eax, al
add edx, 0xfffffffa
lea edx, [eax + edx*8]
mov dword [ebp - 0x14], edx
inc esi
jmp 0x40d611
xor edx, edx
mov dword [ebp - 0xc], esi
lea ecx, [ebp - 0xc]
call fcn.0040c100
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x40d488
lea ecx, [edi + 0x34]
cmp eax, dword [ecx]
jl 0x40d480
mov edx, dword [edi + 0x38]
test edx, edx
jns 0x40d47c
push 0
lea edx, [edi + 0x3c]
mov ecx, edi
call fcn.0040cdd3
mov edx, eax
mov eax, dword [ebp - 0x1c]
pop ecx
mov dword [edi + 0x38], edx
lea ecx, [edi + 0x34]
cmp eax, edx
jge 0x40d488
mov esi, dword [ebp - 0xc]
jmp 0x40d5d1
xor ecx, ecx
cmp dword [edi + 0x28], ecx
jne 0x40d4df
mov al, byte [esi]
cmp al, 0x37
ja 0x40d4d4
mov edx, ecx
mov ecx, esi
mov dword [ebp - 0x14], edx
cmp al, 0x33
ja 0x40d4b1
movzx edx, al
lea ecx, [esi + 1]
sub edx, 0x30
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], edx
mov esi, ecx
mov al, byte [esi]
cmp al, 0x30
jb 0x40d614
cmp al, 0x37
ja 0x40d614
movzx eax, al
lea esi, [ecx + 1]
add edx, 0xfffffffa
lea edx, [eax + edx*8]
jmp 0x40d418
movzx eax, al
mov dword [ebp - 0x14], eax
jmp 0x40d43c
push str.back_reference_out_of_range_in_regular_expression
jmp 0x40d336
cmp eax, 0x62
je 0x40db1f
cmp eax, 0x6b
jne case.default.0x40d3d0
cmp byte [edx + 2], 0x3c
je 0x40d534
cmp dword [edi + 0x28], ecx
jne 0x40d52a
lea esi, [edi + 0x3c]
cmp dword [esi], ecx
jge 0x40d524
cmp dword [edi + 0x38], ecx
jge 0x40d522
push ecx
mov edx, esi
mov ecx, edi
call fcn.0040cdd3
pop ecx
mov dword [edi + 0x38], eax
xor ecx, ecx
cmp dword [esi], ecx
je case.default.0x40d3d0
push str.expecting_group_name
jmp 0x40d336
lea eax, [edx + 3]
mov dword [ebp - 0x1c], eax
lea esi, [edi + 0x5c]
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.0040cc62
pop ecx
test eax, eax
je 0x40d57d
xor ecx, ecx
cmp dword [edi + 0x28], ecx
jne 0x40d118
lea esi, [edi + 0x3c]
cmp dword [esi], ecx
jge 0x40d576
cmp dword [edi + 0x38], ecx
jge 0x40d574
push ecx
mov edx, esi
mov ecx, edi
call fcn.0040cdd3
pop ecx
mov dword [edi + 0x38], eax
xor ecx, ecx
cmp dword [esi], ecx
je case.default.0x40d3d0
jmp 0x40d118
mov edx, esi
mov ecx, edi
call fcn.0040cf52
test eax, eax
jns 0x40d5cb
push esi
lea edx, [ebp - 0x28]
mov ecx, edi
call fcn.0040cdd3
pop ecx
test eax, eax
jns 0x40d5cb
xor ecx, ecx
cmp dword [edi + 0x28], ecx
jne 0x40d5c1
lea esi, [edi + 0x3c]
cmp dword [esi], ecx
jge 0x40d5bf
cmp dword [edi + 0x38], ecx
jge 0x40d5bd
push ecx
mov edx, esi
mov ecx, edi
call fcn.0040cdd3
pop ecx
mov dword [edi + 0x38], eax
xor ecx, ecx
cmp dword [esi], ecx
je case.default.0x40d3d0
push str.group_name_not_defined
jmp 0x40d336
mov esi, dword [ebp - 0x1c]
lea ecx, [edi + 0x34]
mov dword [ebp - 8], esi
mov edx, dword [ebp - 0x18]
mov ecx, dword [ecx]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10], ecx
mov ecx, edi
push eax
lea edx, [edx + 0x13]
call fcn.0040c086
pop ecx
jmp 0x40d6a3
xor ecx, ecx
push ecx
lea eax, [ebp - 0xc]
mov ecx, edi
push eax
lea edx, [ebp - 0x3c]
call fcn.0040c6de
mov dword [ebp - 0x14], eax
pop ecx
pop ecx
test eax, eax
js 0x40d0d2
mov esi, dword [ebp - 0xc]
mov dword [ebp - 8], esi
cmp dword [ebp - 0x18], 0
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10], eax
je 0x40d634
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
pop ecx
mov eax, dword [ebp - 0x14]
cmp eax, 0x40000000
jl 0x40d65c
lea edx, [ebp - 0x3c]
mov ecx, edi
call fcn.0040c8af
lea ecx, [ebp - 0x3c]
mov esi, eax
call fcn.0040f34d
test esi, esi
jne 0x40d0d2
jmp 0x40d689
cmp dword [edi + 0x2c], 0
je 0x40d66c
mov edx, dword [edi + 0x28]
mov ecx, eax
call fcn.0040f0da
mov ecx, edi
push eax
cmp eax, 0xffff
jg 0x40d680
xor edx, edx
inc edx
call fcn.0040c0b1
jmp 0x40d688
push 2
pop edx
call fcn.0040c01d
pop ecx
cmp dword [ebp - 0x18], 0
je 0x40d6a0
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1b
mov ecx, edi
call fcn.00401153
pop ecx
mov esi, dword [ebp - 8]
test ebx, ebx
js 0x40d769
movzx eax, byte [esi]
mov ecx, 0x7fffffff
sub eax, 0x2a
je 0x40d7b7
sub eax, 1
je 0x40d7ad
sub eax, 0x14
je 0x40d7a3
sub eax, 0x3c
jne 0x40d769
lea ecx, [esi + 1]
mov al, byte [ecx]
cmp al, 0x30
jb 0x40d793
cmp al, 0x39
ja 0x40d793
mov eax, dword [ebp - 0x10]
xor edx, edx
mov dword [ebp - 0xc], ecx
inc edx
lea ecx, [ebp - 0xc]
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
call fcn.0040c100
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
cmp byte [eax], 0x2c
jne 0x40d75b
inc eax
mov dword [ebp - 0xc], eax
mov cl, byte [eax]
cmp cl, 0x30
jb 0x40d74b
cmp cl, 0x39
ja 0x40d74b
xor edx, edx
lea ecx, [ebp - 0xc]
inc edx
call fcn.0040c100
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x18]
jl 0x40d799
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
jmp 0x40d75b
mov ecx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x14], 0x7fffffff
mov dword [ebp - 0x10], ecx
cmp byte [eax], 0x7d
je 0x40d776
cmp dword [edi + 0x28], 0
jne 0x40d776
mov dword [ebp - 8], esi
mov esi, dword [ebp - 8]
mov dword [edi + 0x18], esi
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
push 0x7d
lea edx, [ebp - 0xc]
mov ecx, edi
call fcn.0040c17e
pop ecx
test eax, eax
jne 0x40d0d2
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
jmp 0x40d7c1
cmp dword [edi + 0x28], 0
je 0x40d769
push str.invalid_repetition_count
jmp 0x40d336
and dword [ebp - 0x18], 0
xor eax, eax
inc esi
inc eax
jmp 0x40d7be
inc esi
mov dword [ebp - 0x18], 1
jmp 0x40d7bc
inc esi
and dword [ebp - 0x18], 0
mov eax, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 8], esi
cmp byte [esi], 0x3f
jne 0x40d7d6
inc esi
mov dword [ebp - 8], esi
xor esi, esi
mov ecx, esi
jmp 0x40d871
test eax, eax
jle 0x40d84e
cmp dword [edi + 0xc], 0
jne 0x40db15
mov edx, dword [edi + 4]
mov ecx, dword [edi]
sub edx, ebx
add ecx, ebx
call fcn.0040cbf0
mov esi, eax
test esi, esi
jle 0x40d84e
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0xa
mov ecx, edi
call fcn.00401153
pop ecx
push 0x11
mov edx, ebx
mov ecx, edi
call fcn.0040bf00
pop ecx
test eax, eax
jne 0x40db15
mov eax, dword [edi]
mov byte [ebx + eax], 0x1c
mov ecx, dword [edi + 4]
mov eax, dword [edi]
sub ecx, ebx
sub ecx, 0x11
mov dword [ebx + eax + 1], ecx
mov eax, dword [edi]
mov ecx, dword [ebp - 0x18]
mov dword [ebx + eax + 5], ecx
mov eax, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dword [ebx + eax + 9], ecx
mov eax, dword [edi]
mov dword [eax + ebx + 0xd], esi
jmp 0x40d769
cmp dword [edi + 0xc], 0
jne 0x40db15
mov edx, dword [edi + 4]
mov ecx, dword [edi]
sub edx, ebx
add ecx, ebx
call fcn.0040cb4d
mov esi, eax
xor ecx, ecx
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 4]
mov edx, dword [ebp - 0x18]
sub eax, ebx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0xc], eax
test edx, edx
jne 0x40d9d6
mov eax, dword [ebp - 0x10]
cmp eax, dword [edi + 0x34]
je 0x40d8c0
push 3
mov edx, ebx
mov ecx, edi
call fcn.0040bf00
pop ecx
test eax, eax
jne 0x40db15
mov eax, dword [edi]
mov ecx, dword [ebp - 0x10]
mov byte [ebx + eax], 0xd
mov eax, dword [edi]
mov byte [ebx + eax + 1], cl
mov cl, byte [edi + 0x34]
mov eax, dword [edi]
dec cl
mov byte [ebx + eax + 2], cl
add ebx, 3
mov eax, dword [ebp - 0x14]
test eax, eax
jne 0x40d8cf
mov dword [edi + 4], ebx
jmp 0x40d769
cmp eax, 1
je 0x40d964
cmp eax, 0x7fffffff
je 0x40d964
lea eax, [esi + 0xa]
mov edx, ebx
push eax
mov ecx, edi
call fcn.0040bf00
pop ecx
test eax, eax
jne 0x40db15
mov eax, dword [edi]
mov ecx, dword [ebp - 0x14]
mov byte [ebx + eax], 0xf
mov eax, dword [edi]
mov dword [ebx + eax + 1], ecx
mov eax, dword [edi]
mov ecx, dword [ebp - 0x1c]
add cl, 8
mov byte [ebx + eax + 5], cl
mov ecx, dword [ebp - 0xc]
mov eax, dword [edi]
lea ecx, [ecx + esi*2]
add ecx, 5
mov dword [ebx + eax + 6], ecx
test esi, esi
je 0x40d93f
mov eax, dword [edi]
lea edx, [ebp - 4]
push 1
mov ecx, edi
mov byte [ebp - 4], 0x1a
mov byte [eax + ebx + 0xa], 0x19
call fcn.00401153
pop ecx
lea eax, [ebx + 5]
push eax
push 0xe
pop edx
mov ecx, edi
call fcn.0040c04f
pop ecx
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x10
mov ecx, edi
call fcn.00401153
pop ecx
jmp 0x40d769
lea eax, [esi + 5]
mov edx, ebx
push eax
mov ecx, edi
call fcn.0040bf00
pop ecx
test eax, eax
jne 0x40db15
mov eax, dword [edi]
mov ecx, dword [ebp - 0x1c]
add cl, 8
push 5
mov byte [ebx + eax], cl
xor eax, eax
cmp dword [ebp - 0x14], 0x7fffffff
pop edx
cmove eax, edx
add eax, dword [ebp - 0xc]
lea ecx, [eax + esi*2]
mov eax, dword [edi]
mov dword [eax + ebx + 1], ecx
test esi, esi
je 0x40d9bc
mov eax, dword [edi]
lea edx, [ebp - 4]
push 1
mov ecx, edi
mov byte [ebp - 4], 0x1a
mov byte [eax + ebx + 5], 0x19
call fcn.00401153
pop ecx
cmp dword [ebp - 0x14], 0x7fffffff
jne 0x40d769
push ebx
push 7
pop edx
mov ecx, edi
call fcn.0040c04f
jmp 0x40d95e
cmp edx, 1
jne 0x40d9f5
mov eax, dword [ebp - 0x14]
cmp eax, 0x7fffffff
jne 0x40daa2
test esi, esi
jne 0x40da42
mov edx, dword [ebp - 0x20]
push ebx
sub edx, ecx
jmp 0x40d9cd
push 5
mov edx, ebx
mov ecx, edi
call fcn.0040bf00
pop ecx
test eax, eax
jne 0x40db15
mov eax, dword [edi]
mov ecx, dword [ebp - 0x18]
mov byte [ebx + eax], 0xf
mov eax, dword [edi]
mov dword [eax + ebx + 1], ecx
add ebx, 5
push ebx
push 0xe
pop edx
mov ecx, edi
call fcn.0040c04f
pop ecx
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x10
mov ecx, edi
call fcn.00401153
mov eax, dword [ebp - 0x14]
pop ecx
cmp eax, 0x7fffffff
jne 0x40da9f
mov eax, dword [edi + 4]
mov ecx, edi
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0xc]
add eax, 5
lea edx, [edx + 8]
lea eax, [eax + esi*2]
push eax
call fcn.0040c01d
pop ecx
test esi, esi
je 0x40da75
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x19
mov ecx, edi
call fcn.00401153
pop ecx
push dword [ebp - 0xc]
mov edx, ebx
mov ecx, edi
call fcn.00401192
pop ecx
test esi, esi
je 0x40da97
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1a
mov ecx, edi
call fcn.00401153
pop ecx
push dword [ebp - 0x28]
jmp 0x40d9ca
mov edx, dword [ebp - 0x18]
cmp eax, edx
jle 0x40d769
sub eax, edx
mov ecx, edi
push eax
push 0xf
pop edx
call fcn.0040c01d
mov eax, dword [edi + 4]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0xc]
pop ecx
lea edx, [edx + 8]
mov ecx, edi
lea eax, [eax + esi*2]
add eax, 5
push eax
call fcn.0040c01d
pop ecx
test esi, esi
je 0x40daeb
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x19
mov ecx, edi
call fcn.00401153
pop ecx
push dword [ebp - 0xc]
mov edx, ebx
mov ecx, edi
call fcn.00401192
pop ecx
test esi, esi
je 0x40db0d
push 1
lea edx, [ebp - 4]
mov byte [ebp - 4], 0x1a
mov ecx, edi
call fcn.00401153
pop ecx
push dword [ebp - 0x28]
jmp 0x40d943
push str.out_of_memory
jmp 0x40d336
xor edx, edx
mov ecx, edi
cmp bl, 0x62
setne dl
add edx, 0x11
call fcn.0040c009
mov esi, dword [ebp - 0x28]
add esi, 2
jmp 0x40d76c