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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
mov eax, dword [0x43c3d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x5c], eax
neg eax
push esi
push edi
push dword [ebp + 0x10]
sbb edi, edi
mov dword [ebp - 0x40], ebx
and edi, dword [ebp + 0xc]
mov dword [ebp - 0x60], edi
call fcn.00410bf0
mov esi, eax
pop ecx
xor ecx, ecx
mov dword [ebp - 0x58], ecx
mov dl, byte [esi]
inc esi
mov dword [ebp - 0x4c], ecx
test dl, dl
je 0x411812
mov dword [ebp - 0x78], 0xa
mov dword [ebp - 0xa0], 0x64
cmp dl, 0x25
je 0x410d1c
mov eax, ecx
inc ecx
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x4c], ecx
cmp eax, edi
jae 0x410d14
mov eax, dword [ebp - 0x5c]
mov byte [eax + ecx - 1], dl
mov dl, byte [esi]
inc esi
jmp 0x411807
mov dl, byte [esi]
inc esi
mov byte [ebp - 0x39], dl
mov dword [ebp - 0x8c], esi
cmp dl, 0x25
jne 0x410d43
mov eax, ecx
inc ecx
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x4c], ecx
cmp eax, edi
jae 0x410d14
mov eax, dword [ebp - 0x5c]
mov byte [eax + ecx - 1], dl
jmp 0x410d14
or dword [ebp - 0x68], 0xffffffff
xor eax, eax
and dword [ebp - 0x6c], eax
xor edi, edi
and dword [ebp - 0x74], eax
and dword [ebp - 0x54], eax
and dword [ebp - 0x64], eax
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x84], 0xa
test dl, dl
je 0x41180f
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x70], ebx
dec dword [ebp - 0x70]
mov ebx, dword [ebp - 0x40]
je 0x4117ab
mov eax, dword [ebp - 0x70]
dec eax
je 0x411771
dec eax
je 0x411763
dec eax
je 0x411721
dec eax
je 0x411695
dec eax
jne 0x4117e8
movsx eax, dl
mov dword [ebp - 0x80], eax
add eax, 0xffffffbd
cmp eax, 0x35
ja case.0x410dc7.68
movzx eax, byte [eax + 0x411860]
jmp dword [eax*4 + 0x41183c]
mov eax, dword [ebp - 0x48]
or eax, 0x80
mov dword [ebp - 0x48], eax
jmp 0x410dde
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x80]
sub ecx, 0x50
je 0x410e0b
sub ecx, 8
je 0x410e06
sub ecx, 0x17
je 0x410dfa
dec ecx
je 0x410e0e
sub ecx, 8
je 0x410e1a
jmp 0x410e24
mov dword [ebp - 0x84], 8
jmp 0x410e24
or eax, 0x20
jmp 0x410e17
or eax, 0x20
push 0x20
pop edi
or eax, 0x40
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x84], 0x10
test edi, edi
jne 0x410e2e
push 0x20
pop edi
mov dword [ebp - 0x50], edi
mov edx, eax
and edx, 0x80
mov dword [ebp - 0x44], edx
je 0x410e7c
cmp edi, 8
je 0x410e74
cmp edi, 0x10
je 0x410e6c
cmp edi, 0x20
je 0x410e5f
cmp edi, 0x40
jne 0x410eb0
mov ecx, dword [ebx]
add ebx, 8
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x40], ebx
mov ecx, dword [ebx - 4]
jmp 0x410eb3
add ebx, 4
xor ecx, ecx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebx - 4]
jmp 0x410eb6
movzx eax, word [ebx]
add ebx, 4
jmp 0x410e98
movzx eax, byte [ebx]
add ebx, 4
jmp 0x410e98
cmp edi, 8
je 0x410ea8
cmp edi, 0x10
je 0x410e92
cmp edi, 0x20
jne 0x410e4a
mov eax, dword [ebx]
add ebx, 4
jmp 0x410e98
movsx eax, word [ebx]
add ebx, 4
cdq
mov dword [ebp - 0x40], ebx
mov ecx, edx
mov edx, dword [ebp - 0x44]
mov ebx, eax
mov eax, dword [ebp - 0x48]
jmp 0x410eb6
movsx eax, byte [ebx]
add ebx, 4
jmp 0x410e98
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x54]
cmp dword [ebp - 0x68], 0
mov byte [ebp - 0x39], 0
jge 0x410ec4
and dword [ebp - 0x68], 0
test edx, edx
jne 0x410ef1
test ecx, ecx
jg 0x410edf
jl 0x410ed2
test ebx, ebx
jae 0x410edf
neg ebx
mov byte [ebp - 0x39], 0x2d
adc ecx, 0
neg ecx
jmp 0x410ef1
test al, 1
je 0x410ee9
mov byte [ebp - 0x39], 0x2b
jmp 0x410ef1
test al, 4
je 0x410ef1
mov byte [ebp - 0x39], 0x20
xor edx, edx
and dword [ebp - 0x88], edx
mov dword [ebp - 0x70], edx
mov edx, 0x432094
test al, 0x20
jne 0x410f0a
mov edx, str.0123456789abcdef0x
test al, 8
mov dword [ebp - 0x7c], edx
mov eax, dword [ebp - 0x84]
je 0x410f41
cmp eax, 8
jne 0x410f2d
mov edx, 0x43207c
mov dword [ebp - 0x88], 1
jmp 0x410f3e
cmp eax, 0x10
jne 0x410f41
add edx, eax
mov dword [ebp - 0x88], 2
mov dword [ebp - 0x70], edx
mov esi, dword [ebp - 0x7c]
xor edi, edi
cdq
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x44], edx
push edx
push eax
push ecx
push ebx
call fcn.00425580
mov dword [ebp - 0x54], eax
mov dword [ebp - 0xc0], ebx
mov ebx, dword [ebp - 0x54]
mov al, byte [ecx + esi]
mov ecx, edx
mov byte [ebp + edi - 0x38], al
inc edi
mov eax, ebx
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x44]
or eax, ecx
mov eax, dword [ebp - 0x80]
jne 0x410f4d
mov eax, dword [ebp - 0x68]
mov ecx, eax
sub ecx, edi
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x7c], ecx
cmp eax, edi
jle 0x410f8e
mov edi, eax
mov ebx, dword [ebp - 0x74]
xor eax, eax
cmp byte [ebp - 0x39], al
mov esi, dword [ebp - 0x8c]
setne al
sub ebx, eax
sub ebx, edi
mov edi, dword [ebp - 0x50]
sub ebx, dword [ebp - 0x88]
mov dword [ebp - 0x44], ebx
test ecx, ecx
jns 0x410fb8
xor ecx, ecx
mov dword [ebp - 0x7c], ecx
test ebx, ebx
jns 0x410fc1
xor ebx, ebx
mov dword [ebp - 0x44], ebx
mov eax, dword [ebp - 0x48]
test al, 0x10
je 0x410fd4
cmp ecx, ebx
jg 0x410fcf
mov dword [ebp - 0x7c], ebx
xor ebx, ebx
mov dword [ebp - 0x44], ebx
test al, 2
je 0x410fdd
neg ebx
mov dword [ebp - 0x44], ebx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x60]
test ebx, ebx
jle 0x411005
mov edi, dword [ebp - 0x5c]
inc ecx
cmp ecx, edx
ja 0x410ff4
mov byte [edi + ecx - 1], 0x20
dec ebx
mov dword [ebp - 0x4c], ecx
test ebx, ebx
jg 0x410fea
mov edi, dword [ebp - 0x50]
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x58], ecx
mov al, byte [ebp - 0x39]
test al, al
je 0x411026
movsx eax, al
push eax
lea eax, [ebp - 0x4c]
push eax
push edx
push dword [ebp - 0x5c]
call fcn.00411a5d
mov ecx, dword [ebp - 0x4c]
add esp, 0x10
mov dword [ebp - 0x58], ecx
cmp dword [ebp - 0x88], 0
je 0x41106c
mov edi, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x88]
mov eax, dword [ebp - 0x70]
movsx eax, byte [eax]
push eax
lea eax, [ebp - 0x4c]
push eax
push edi
push ebx
call fcn.00411a5d
mov eax, dword [ebp - 0x70]
add esp, 0x10
inc eax
mov dword [ebp - 0x70], eax
dec esi
jne 0x41103e
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x58], ecx
mov eax, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x60]
test eax, eax
jle 0x411094
mov ebx, dword [ebp - 0x5c]
inc ecx
cmp ecx, edx
ja 0x411083
mov byte [ebx + ecx - 1], 0x30
dec eax
mov dword [ebp - 0x4c], ecx
test eax, eax
jg 0x411079
mov edi, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x58], ecx
cmp dword [ebp - 0x80], 0
jle 0x4110c8
mov edi, dword [ebp - 0x80]
mov ebx, dword [ebp - 0x5c]
movsx eax, byte [ebp + edi - 0x39]
dec edi
push eax
lea eax, [ebp - 0x4c]
push eax
push edx
push ebx
call fcn.00411a5d
mov edx, dword [ebp - 0x60]
add esp, 0x10
test edi, edi
jg 0x4110a0
mov ecx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x58], ecx
test ebx, ebx
jns case.0x410dc7.68
mov eax, dword [ebp - 0x60]
neg ebx
mov edi, dword [ebp - 0x5c]
inc ecx
cmp ecx, eax
ja 0x4110e2
mov byte [edi + ecx - 1], 0x20
mov dword [ebp - 0x4c], ecx
dec ebx
jne 0x4110d8
mov dword [ebp - 0x58], ecx
mov edi, dword [ebp - 0x50]
jmp case.0x410dc7.68
push 0x10
pop eax
mov dword [ebp - 0x6c], eax
jmp 0x4110fe
mov eax, dword [ebp - 0x6c]
test eax, eax
jne 0x411131
test edi, edi
jne 0x411131
cmp dl, 0x77
jne 0x41112b
mov dword [ebp - 0x6c], 0x10
movzx eax, word [ebx]
add ebx, 4
cdq
mov ecx, eax
mov eax, edx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x64], eax
jmp 0x4111da
push 8
pop eax
mov dword [ebp - 0x6c], eax
cmp dl, 0x43
je 0x41114e
cmp dl, 0x53
je 0x41116c
cmp dl, 0x63
je 0x41114e
cmp dl, 0x73
je 0x41116c
cmp dl, 0x77
jne case.0x410dc7.68
cmp eax, 8
je 0x4111c9
cmp eax, 0x10
je 0x411112
cmp eax, 0x20
je 0x4111bd
cmp eax, 0x40
jne 0x4111d4
mov ecx, dword [ebx]
add ebx, 8
mov eax, dword [ebx - 4]
jmp 0x41111d
add ebx, 4
mov dword [ebp - 0x40], ebx
cmp eax, 8
je 0x4111a6
cmp eax, 0x10
jne case.0x410dc7.68
mov eax, dword [ebp - 0x48]
shr eax, 1
and eax, 1
push eax
push dword [ebp - 0x68]
lea eax, [ebp - 0x4c]
push dword [ebp - 0x74]
push dword [ebx - 4]
push eax
push dword [ebp - 0x60]
push dword [ebp - 0x5c]
call fcn.00411d36
jmp 0x411683
mov eax, dword [ebp - 0x48]
shr eax, 1
and eax, 1
push eax
push dword [ebp - 0x68]
push dword [ebp - 0x74]
push dword [ebx - 4]
jmp 0x411674
mov ecx, dword [ebx]
add ebx, 4
xor eax, eax
jmp 0x41111d
movzx eax, byte [ebx]
add ebx, 4
jmp 0x411118
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x54]
test eax, eax
ja case.0x410dc7.68
jb 0x4111ed
cmp ecx, 0xffffffff
ja case.0x410dc7.68
push ecx
lea eax, [ebp - 0x4c]
push eax
push dword [ebp - 0x60]
push dword [ebp - 0x5c]
call fcn.00411a5d
add esp, 0x10
jmp 0x411686
test edi, edi
jne 0x41120f
push 0x20
pop edi
mov dword [ebp - 0x50], edi
cmp edi, 8
je 0x411259
cmp edi, 0x10
je 0x411249
cmp edi, 0x20
je 0x41123a
cmp edi, 0x40
jne case.0x410dc7.68
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov dword [eax], ecx
and dword [eax + 4], 0
jmp case.0x410dc7.68
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov dword [eax], ecx
jmp case.0x410dc7.68
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov word [eax], cx
jmp case.0x410dc7.68
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov byte [eax], cl
jmp case.0x410dc7.68
mov eax, dword [ebp - 0x48]
or eax, 0x20
mov dword [ebp - 0x48], eax
jmp 0x411276
mov eax, dword [ebp - 0x48]
mov esi, dword [ebx]
lea edi, [ebp - 0xbc]
add ebx, 4
mov dword [ebp - 0x40], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, 0x432094
test al, 0x20
jne 0x411296
mov esi, str.0123456789abcdef0x
mov ecx, dword [ebp - 0xbc]
mov eax, ecx
shr eax, 0x1c
push 0xf
pop edi
mov edx, dword [ebp - 0xb8]
mov al, byte [eax + esi]
mov byte [ebp - 0x38], al
mov eax, ecx
shr eax, 0x18
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x37], al
mov eax, ecx
shr eax, 0x14
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x36], al
mov eax, ecx
shr eax, 0x10
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x35], al
mov eax, ecx
shr eax, 0xc
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x34], al
mov eax, ecx
shr eax, 8
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x33], al
mov eax, ecx
shr eax, 4
and ecx, edi
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x32], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x31], al
movzx ecx, dx
mov byte [ebp - 0x30], 0x2d
mov eax, ecx
shr eax, 0xc
shr edx, 0x10
mov al, byte [eax + esi]
mov byte [ebp - 0x2f], al
mov eax, ecx
shr eax, 8
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x2e], al
mov eax, ecx
shr eax, 4
and ecx, edi
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x2d], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x2c], al
mov eax, edx
shr eax, 0xc
mov byte [ebp - 0x2b], 0x2d
mov al, byte [eax + esi]
mov byte [ebp - 0x2a], al
mov eax, edx
shr eax, 8
and eax, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x29], al
mov eax, edx
shr eax, 4
and eax, edi
and edx, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x28], al
mov al, byte [edx + esi]
mov edx, dword [ebp - 0xb4]
mov byte [ebp - 0x27], al
mov byte [ebp - 0x26], 0x2d
movzx ecx, dl
mov eax, ecx
and ecx, edi
shr eax, 4
mov al, byte [eax + esi]
mov byte [ebp - 0x25], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x24], al
mov eax, edx
shr eax, 8
movzx ecx, al
mov eax, ecx
and ecx, edi
shr eax, 4
mov al, byte [eax + esi]
mov byte [ebp - 0x23], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x22], al
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ecx
mov byte [ebp - 0x21], 0x2d
shr eax, 4
and ecx, edi
shr edx, 0x18
mov al, byte [eax + esi]
mov byte [ebp - 0x20], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x1f], al
mov eax, edx
shr eax, 4
and edx, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x1e], al
mov al, byte [edx + esi]
mov edx, dword [ebp - 0xb0]
mov byte [ebp - 0x1d], al
movzx ecx, dl
mov eax, ecx
and ecx, edi
shr eax, 4
mov al, byte [eax + esi]
mov byte [ebp - 0x1c], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x1b], al
mov eax, edx
shr eax, 8
movzx ecx, al
mov eax, ecx
and ecx, edi
shr eax, 4
mov al, byte [eax + esi]
mov byte [ebp - 0x1a], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x19], al
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ecx
shr edx, 0x18
shr eax, 4
and ecx, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x18], al
mov al, byte [ecx + esi]
mov byte [ebp - 0x17], al
mov eax, edx
shr eax, 4
and edx, edi
mov al, byte [eax + esi]
mov byte [ebp - 0x16], al
mov al, byte [edx + esi]
mov byte [ebp - 0x15], al
mov eax, dword [ebp - 0x48]
shr eax, 1
and eax, 1
mov byte [ebp - 0x14], 0
push eax
push dword [ebp - 0x68]
push dword [ebp - 0x74]
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x4c]
push eax
push dword [ebp - 0x60]
push dword [ebp - 0x5c]
call fcn.00411c66
mov eax, dword [ebp - 0x4c]
add esp, 0x1c
mov esi, dword [ebp - 0x8c]
mov dword [ebp - 0x58], eax
jmp 0x4110eb
cmp dl, 0x54
je 0x4114d7
cmp dl, 0x74
jne 0x4114e7
test edi, edi
jne 0x411494
push 0x40
pop edi
mov dword [ebp - 0x50], edi
push 0
push 0x989680
cmp edi, 0x20
jle 0x4114b5
mov ecx, dword [ebx]
add ebx, 8
add ecx, 0xb6109100
mov eax, dword [ebx - 4]
adc eax, 2
push eax
push ecx
jmp 0x4114c5
mov eax, dword [ebx]
add ebx, 4
cdq
add eax, 0xb6109100
adc edx, 2
push edx
push eax
mov dword [ebp - 0x40], ebx
call fcn.00422d20
mov dword [ebp - 0x54], eax
mov eax, edx
mov dword [ebp - 0x64], eax
jmp 0x4114ea
mov eax, dword [ebx]
add ebx, 8
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x40], ebx
mov eax, dword [ebx - 4]
jmp 0x4114d2
mov eax, dword [ebp - 0x64]
lea ecx, [ebp - 0x94]
push ecx
lea ecx, [ebp - 0x9c]
push ecx
lea ecx, [ebp - 0xa8]
push ecx
lea ecx, [ebp - 0xa4]
push ecx
lea ecx, [ebp - 0x98]
push ecx
lea ecx, [ebp - 0xac]
push ecx
lea ecx, [ebp - 0x90]
push ecx
push eax
push dword [ebp - 0x54]
call fcn.0041209c
mov eax, dword [ebp - 0x90]
mov ecx, 0x3e8
cdq
add esp, 0x24
idiv ecx
push 0xa
cdq
pop ecx
idiv ecx
mov eax, dword [ebp - 0x90]
add dl, 0x30
mov byte [ebp - 0x34], 0x2d
mov byte [ebp - 0x38], dl
cdq
idiv dword [ebp - 0xa0]
push 0xa
cdq
idiv ecx
mov eax, dword [ebp - 0x90]
add dl, 0x30
mov byte [ebp - 0x31], 0x2d
mov byte [ebp - 0x37], dl
cdq
idiv ecx
mov byte [ebp - 0x2e], 0x20
mov ecx, edx
cdq
idiv dword [ebp - 0x78]
mov eax, dword [ebp - 0xac]
add cl, 0x30
add dl, 0x30
mov byte [ebp - 0x35], cl
mov byte [ebp - 0x36], dl
cdq
pop ecx
idiv ecx
push 0xa
mov ecx, edx
cdq
idiv dword [ebp - 0x78]
mov eax, dword [ebp - 0x98]
add cl, 0x30
add dl, 0x30
mov byte [ebp - 0x32], cl
mov byte [ebp - 0x33], dl
cdq
pop ecx
idiv ecx
push 0xa
mov ecx, edx
cdq
idiv dword [ebp - 0x78]
mov eax, dword [ebp - 0xa4]
add cl, 0x30
add dl, 0x30
mov byte [ebp - 0x2f], cl
mov byte [ebp - 0x30], dl
cdq
pop ecx
idiv ecx
mov ecx, edx
cdq
idiv dword [ebp - 0x78]
add dl, 0x30
mov eax, dword [ebp - 0xa8]
add cl, 0x30
mov byte [ebp - 0x2d], dl
cdq
mov byte [ebp - 0x2c], cl
push 0xa
pop ecx
idiv ecx
push 0xa
mov ecx, edx
mov byte [ebp - 0x2b], 0x3a
cdq
add cl, 0x30
idiv dword [ebp - 0x78]
mov eax, dword [ebp - 0x9c]
add dl, 0x30
mov byte [ebp - 0x29], cl
mov byte [ebp - 0x2a], dl
cdq
pop ecx
idiv ecx
mov byte [ebp - 0x28], 0x3a
mov ecx, edx
mov byte [ebp - 0x25], 0
cdq
add cl, 0x30
idiv dword [ebp - 0x78]
mov byte [ebp - 0x26], cl
add dl, 0x30
cmp byte [ebp - 0x39], 0x54
mov byte [ebp - 0x27], dl
jne 0x411661
mov eax, dword [ebp - 0x94]
cdq
push 0x64
pop ecx
idiv ecx
push 0xa
cdq
pop ecx
idiv ecx
mov eax, dword [ebp - 0x94]
add dl, 0x30
mov byte [ebp - 0x25], 0x2e
mov byte [ebp - 0x24], dl
cdq
idiv ecx
mov byte [ebp - 0x21], 0
mov ecx, edx
cdq
idiv dword [ebp - 0x78]
add dl, 0x30
add cl, 0x30
mov byte [ebp - 0x23], dl
mov byte [ebp - 0x22], cl
mov eax, dword [ebp - 0x48]
shr eax, 1
and eax, 1
push eax
push dword [ebp - 0x68]
lea eax, [ebp - 0x38]
push dword [ebp - 0x74]
push eax
lea eax, [ebp - 0x4c]
push eax
push dword [ebp - 0x60]
push dword [ebp - 0x5c]
call fcn.00411c66
add esp, 0x1c
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x58], eax
and dword [ebp - 0x44], 0
jmp 0x4117e8
cmp dl, 0x49
je 0x4116dc
cmp dl, 0x4c
je 0x4116c5
cmp dl, 0x68
je 0x4116b6
cmp dl, 0x6c
je 0x4116c5
dec esi
mov dword [ebp - 0x44], 6
jmp 0x4117e8
push 0x10
pop edi
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x6c], 8
jmp 0x4116aa
cmp byte [esi], 0x6c
jne 0x4116cd
inc esi
jmp 0x411719
push 0x20
pop edi
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x6c], 0x10
jmp 0x4116aa
mov al, byte [esi]
cmp al, 0x38
jne 0x4116e7
inc esi
push 8
jmp 0x411704
cmp al, 0x31
jne 0x4116f5
cmp byte [esi + 1], 0x36
jne 0x4116f5
push 0x10
jmp 0x411701
cmp al, 0x33
jne 0x41170c
cmp byte [esi + 1], 0x32
jne 0x41170c
push 0x20
add esi, 2
pop eax
mov dword [ebp - 0x6c], eax
mov edi, eax
jmp 0x41171c
cmp al, 0x36
jne 0x4116a9
cmp byte [esi + 1], 0x34
jne 0x4116a9
add esi, 2
push 0x40
pop edi
mov dword [ebp - 0x50], edi
jmp 0x4116aa
lea eax, [edx - 0x30]
cmp al, 9
ja 0x411744
mov eax, dword [ebp - 0x68]
test eax, eax
jns 0x411731
xor eax, eax
imul ecx, eax, 0xa
movsx eax, dl
add eax, 0xffffffd0
add eax, ecx
mov dword [ebp - 0x68], eax
jmp 0x4117e8
cmp dl, 0x2a
jne 0x411756
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x68], eax
jmp 0x411757
dec esi
mov dword [ebp - 0x44], 5
jmp 0x4117e8
cmp dl, 0x2e
jne 0x4117a2
mov dword [ebp - 0x44], 4
jmp 0x4117e8
lea eax, [edx - 0x30]
cmp al, 9
ja 0x411789
imul ecx, dword [ebp - 0x74], 0xa
movsx eax, dl
add ecx, 0xffffffd0
add eax, ecx
mov dword [ebp - 0x74], eax
jmp 0x4117e8
cmp dl, 0x2a
jne 0x4117a2
mov eax, dword [ebx]
add ebx, 4
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x44], 3
jmp 0x4117e8
mov dword [ebp - 0x44], 5
jmp 0x4117cc
movsx ecx, dl
sub ecx, 0x20
je 0x4117e2
sub ecx, 3
je 0x4117dd
sub ecx, 8
je 0x4117d8
push 2
pop edx
sub ecx, edx
je 0x4117d4
sub ecx, 3
je 0x4117cf
mov dword [ebp - 0x44], edx
dec esi
jmp 0x4117e8
or eax, 0x10
jmp 0x4117e5
or eax, edx
jmp 0x4117e5
or eax, 1
jmp 0x4117e5
or eax, 8
jmp 0x4117e5
or eax, 4
mov dword [ebp - 0x48], eax
mov dl, byte [esi]
inc esi
cmp dword [ebp - 0x44], 0
mov ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x48]
mov byte [ebp - 0x39], dl
mov dword [ebp - 0x8c], esi
jne 0x410d6e
mov edi, dword [ebp - 0x60]
test dl, dl
jne 0x410cfb
mov edi, dword [ebp - 0x60]
test edi, edi
je 0x411826
cmp ecx, edi
jae 0x41181e
mov edi, ecx
jmp 0x41181f
dec edi
mov eax, dword [ebp - 0x5c]
mov byte [edi + eax], 0
mov eax, ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004225c9
mov esp, ebp
pop ebp
ret