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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x39c
push esi
push edi
mov byte [ebp - 0x2c], 0
mov ecx, 0xa
xor eax, eax
lea edi, [ebp - 0x2b]
rep stosd dword es:[edi], eax
mov byte [ebp - 0xe0], 0
xor eax, eax
mov dword [ebp - 0xdf], eax
mov dword [ebp - 0xdb], eax
mov dword [ebp - 0xd7], eax
mov dword [ebp - 0xd3], eax
mov dword [ebp - 0xcf], eax
mov byte [ebp - 0x98], 0
mov ecx, 0xf
xor eax, eax
lea edi, [ebp - 0x97]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov byte [ebp - 0x344], 0
xor ecx, ecx
mov dword [ebp - 0x343], ecx
mov dword [ebp - 0x33f], ecx
mov dword [ebp - 0xe4], 0
mov byte [ebp - 0x334], 0
mov ecx, 0x7f
xor eax, eax
lea edi, [ebp - 0x333]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [ebp - 0xc8], 0
mov edx, dword [ebp + 8]
mov dword [edx + 0xc10], 0x70
mov eax, dword [ebp + 8]
mov dword [eax + 0xc2c], 0
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc24], 0
push str.Write_ID_Table
mov edx, dword [ebp + 8]
add edx, 0x81b
push edx
call fcn.004e998d
add esp, 8
cmp dword [0x56e1dc], 0
jle 0x49173c
mov eax, dword [ebp + 8]
cmp dword [eax + 0xef4], 0
je 0x49173c
mov ecx, dword [0x56e1dc]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x773]
push eax
push 6
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xef4]
call fcn.00408d3c
mov edx, dword [ebp + 8]
add edx, 0x81b
push edx
mov eax, dword [0x56e1dc]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x773]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xef4]
call fcn.00505c1d
cmp dword [0x56e1e4], 0
jle 0x491779
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xef4], 0
je 0x491779
mov edx, dword [ebp + 8]
add edx, 0x4ff
push edx
mov eax, dword [0x56e1e4]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x773]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xef4]
call fcn.00505c1d
push 0x200
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
add edx, 0x20400
push edx
lea eax, [ebp - 0x334]
push eax
call fcn.004e9b20
add esp, 0xc
push 0x15
mov ecx, dword [ebp + 8]
add ecx, 0x4ff
push ecx
lea edx, [ebp - 0xe0]
push edx
call fcn.004e9b20
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0xe8], 0
je 0x491a0f
mov byte [ebp - 0x350], 0x50
mov byte [ebp - 0x34f], 2
mov byte [ebp - 0x34e], 0x36
mov byte [ebp - 0x34d], 0x10
mov ecx, dword [ebp + 8]
add ecx, 0x4ff
push ecx
call fcn.004ea2e0
add esp, 4
mov dword [ebp - 0x348], eax
mov edx, dword [ebp - 0x348]
sub edx, 9
mov dword [ebp - 0x34c], edx
mov byte [ebp - 0x35c], 0
xor eax, eax
mov dword [ebp - 0x35b], eax
mov dword [ebp - 0x357], eax
cmp dword [0x56e0e4], 0
je 0x491838
lea ecx, [ebp - 0x350]
push ecx
call fcn.004b765e
add esp, 4
mov dword [ebp - 0xf4], 0
jmp 0x491853
mov edx, dword [ebp - 0xf4]
add edx, 1
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 9
jge 0x491967
mov eax, dword [ebp - 0x34c]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x30
jl 0x4918b6
mov edx, dword [ebp - 0x34c]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
cmp eax, 0x39
jg 0x4918b6
mov ecx, dword [ebp - 0x34c]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
sub edx, 0x30
mov eax, dword [ebp - 0xf4]
mov byte [ebp + eax - 0x35c], dl
mov ecx, dword [ebp - 0x34c]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x41
jl 0x49190c
mov eax, dword [ebp - 0x34c]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x46
jg 0x49190c
mov edx, dword [ebp - 0x34c]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
sub eax, 0x37
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x35c], al
mov edx, dword [ebp - 0x34c]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
cmp eax, 0x61
jl 0x491962
mov ecx, dword [ebp - 0x34c]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x66
jg 0x491962
mov eax, dword [ebp - 0x34c]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
sub ecx, 0x57
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x35c], cl
jmp 0x491844
mov al, byte [ebp - 0x34f]
mov byte [ebp - 0x25c], al
mov cl, byte [ebp - 0x350]
mov byte [ebp - 0x25b], cl
mov edx, dword [ebp - 0x34d]
and edx, 0xff
movsx eax, byte [ebp - 0x35c]
add edx, eax
mov byte [ebp - 0x25a], dl
mov cl, byte [ebp - 0x34e]
mov byte [ebp - 0x259], cl
movsx edx, byte [ebp - 0x359]
shl edx, 4
movsx eax, byte [ebp - 0x358]
add edx, eax
mov byte [ebp - 0x258], dl
movsx ecx, byte [ebp - 0x35b]
shl ecx, 4
movsx edx, byte [ebp - 0x35a]
add ecx, edx
mov byte [ebp - 0x257], cl
movsx eax, byte [ebp - 0x355]
shl eax, 4
movsx ecx, byte [ebp - 0x354]
add eax, ecx
mov byte [ebp - 0x256], al
movsx edx, byte [ebp - 0x357]
shl edx, 4
movsx eax, byte [ebp - 0x356]
add edx, eax
mov byte [ebp - 0x255], dl
jmp 0x492278
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xdc], 0
je 0x491c38
mov byte [ebp - 0x360], 0x5f
mov byte [ebp - 0x35f], 0x8d
mov byte [ebp - 0x35e], 0xb4
mov byte [ebp - 0x35d], 0xc0
mov edx, dword [ebp + 8]
mov dword [edx + 0xc10], 0x7d
cmp dword [0x56e0e4], 0
je 0x491a60
lea eax, [ebp - 0x360]
push eax
call fcn.004b765e
add esp, 4
movsx ecx, byte [ebp - 0xdd]
cmp ecx, 0x39
jg 0x491b54
movsx edx, byte [ebp - 0xdd]
cmp edx, 0x30
jl 0x491b54
movsx eax, byte [ebp - 0xdc]
cmp eax, 0x39
jg 0x491b54
movsx ecx, byte [ebp - 0xdc]
cmp ecx, 0x30
jl 0x491b54
movsx edx, byte [ebp - 0xda]
cmp edx, 0x39
jg 0x491b54
movsx eax, byte [ebp - 0xda]
cmp eax, 0x30
jl 0x491b54
movsx ecx, byte [ebp - 0xd2]
cmp ecx, 0x39
jg 0x491b54
movsx edx, byte [ebp - 0xd2]
cmp edx, 0x30
jl 0x491b54
movsx eax, byte [ebp - 0xd1]
cmp eax, 0x39
jg 0x491b54
movsx ecx, byte [ebp - 0xd1]
cmp ecx, 0x30
jl 0x491b54
movsx edx, byte [ebp - 0xd0]
cmp edx, 0x39
jg 0x491b54
movsx eax, byte [ebp - 0xd0]
cmp eax, 0x30
jl 0x491b54
movsx ecx, byte [ebp - 0xcf]
cmp ecx, 0x39
jg 0x491b54
movsx edx, byte [ebp - 0xcf]
cmp edx, 0x30
jl 0x491b54
movsx eax, byte [ebp - 0xce]
cmp eax, 0x39
jg 0x491b54
movsx ecx, byte [ebp - 0xce]
cmp ecx, 0x30
jl 0x491b54
movsx edx, byte [ebp - 0xcd]
cmp edx, 0x39
jg 0x491b54
movsx eax, byte [ebp - 0xcd]
cmp eax, 0x30
jge 0x491b7b
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc2c], 0x29
lea edx, [ebp - 0xe0]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.004a6f9b
add esp, 8
xor eax, eax
jmp 0x492a4d
mov cl, byte [ebp - 0x35f]
mov byte [ebp - 0x25c], cl
mov dl, byte [ebp - 0x360]
mov byte [ebp - 0x25b], dl
mov eax, dword [ebp - 0x35d]
and eax, 0xff
movsx ecx, byte [ebp - 0xdd]
lea edx, [eax + ecx - 0x30]
mov byte [ebp - 0x25a], dl
mov al, byte [ebp - 0x35e]
mov byte [ebp - 0x259], al
movsx ecx, byte [ebp - 0xd2]
sub ecx, 0x30
shl ecx, 4
movsx edx, byte [ebp - 0xd1]
lea eax, [ecx + edx - 0x30]
mov byte [ebp - 0x258], al
movsx ecx, byte [ebp - 0xdc]
sub ecx, 0x30
shl ecx, 4
movsx edx, byte [ebp - 0xda]
lea eax, [ecx + edx - 0x30]
mov byte [ebp - 0x257], al
movsx ecx, byte [ebp - 0xce]
sub ecx, 0x30
shl ecx, 4
movsx edx, byte [ebp - 0xcd]
lea eax, [ecx + edx - 0x30]
mov byte [ebp - 0x256], al
movsx ecx, byte [ebp - 0xd0]
sub ecx, 0x30
shl ecx, 4
movsx edx, byte [ebp - 0xcf]
lea eax, [ecx + edx - 0x30]
mov byte [ebp - 0x255], al
jmp 0x492278
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xe0], 0
je 0x491e5e
lea edx, [ebp - 0x39c]
push edx
call fcn.00504c26
push eax
lea ecx, [ebp - 0x380]
call fcn.004b7dd0
mov byte [ebp - 0x36c], 0
xor eax, eax
mov dword [ebp - 0x36b], eax
mov dword [ebp - 0x370], 0
mov dword [ebp - 0x364], 0
mov byte [ebp - 0x37c], 0
xor ecx, ecx
mov word [ebp - 0x37b], cx
mov byte [ebp - 0x379], cl
push 0
call fcn.004eb376
add esp, 4
mov dword [ebp - 0x374], eax
lea edx, [ebp - 0x374]
push edx
call fcn.004ec070
add esp, 4
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 0x378]
push eax
push 0x562b50
push 5
lea ecx, [ebp - 0x36c]
push ecx
call fcn.004ec055
add esp, 0x10
lea edx, [ebp - 0x36c]
push edx
call fcn.004e98d7
add esp, 4
mov dword [ebp - 0x370], eax
lea ecx, [ebp - 0x380]
call fcn.004b7d10
mov dword [ebp - 0x364], eax
mov dword [ebp - 0xf4], 0
jmp 0x491d1c
mov eax, dword [ebp - 0xf4]
add eax, 1
mov dword [ebp - 0xf4], eax
cmp dword [ebp - 0xf4], 4
jge 0x491db8
mov ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xd0]
cmp edx, 0x30
jl 0x491d6f
mov eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xd0]
cmp ecx, 0x39
jg 0x491d6f
mov edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xd0]
sub eax, 0x30
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x37c], al
jmp 0x491db3
mov edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xd0]
cmp eax, 0x41
jl 0x491db3
mov ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xd0]
cmp edx, 0x46
jg 0x491db3
mov eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xd0]
sub ecx, 0x37
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x37c], cl
jmp 0x491d0d
mov byte [ebp - 0x25c], 0x8d
mov byte [ebp - 0x25b], 0x5f
mov eax, dword [ebp - 0x370]
cdq
mov ecx, 0xa
idiv ecx
and eax, 0xff
add eax, 0xc0
mov byte [ebp - 0x25a], al
mov byte [ebp - 0x259], 0xb4
mov byte [ebp - 0x258], 0x29
mov eax, dword [ebp - 0x370]
cdq
mov ecx, 0xa
idiv ecx
mov ecx, edx
shl ecx, 4
and ecx, 0xff
mov eax, dword [ebp - 0x364]
cdq
mov esi, 0xa
idiv esi
and edx, 0xff
add ecx, edx
mov byte [ebp - 0x257], cl
movsx edx, byte [ebp - 0x37a]
shl edx, 4
movsx eax, byte [ebp - 0x379]
add edx, eax
mov byte [ebp - 0x256], dl
movsx ecx, byte [ebp - 0x37c]
shl ecx, 4
movsx edx, byte [ebp - 0x37b]
add ecx, edx
mov byte [ebp - 0x255], cl
jmp 0x492278
mov eax, dword [ebp + 8]
cmp dword [eax + 0xe4], 0
je 0x49202a
mov byte [ebp - 0x394], 0
xor ecx, ecx
mov dword [ebp - 0x393], ecx
mov dword [ebp - 0x38f], ecx
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov ecx, dword [edx + 0x757]
sub ecx, dword [eax + 0x75b]
mov dword [ebp - 0x388], ecx
mov edx, dword [ebp + 8]
mov eax, 9
sub eax, dword [edx + 0x75b]
mov dword [ebp - 0x384], eax
mov dword [ebp - 0xf4], 0
jmp 0x491eca
mov ecx, dword [ebp - 0xf4]
add ecx, 1
mov dword [ebp - 0xf4], ecx
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0xf4]
cmp eax, dword [edx + 0x75b]
jge 0x491f9c
mov ecx, dword [ebp - 0x388]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x30
jl 0x491f3b
mov eax, dword [ebp - 0x388]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x39
jg 0x491f3b
mov edx, dword [ebp - 0x388]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
sub eax, 0x30
mov ecx, dword [ebp - 0x384]
add ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x394], al
mov edx, dword [ebp - 0x388]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
cmp eax, 0x41
jl 0x491f97
mov ecx, dword [ebp - 0x388]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x46
jg 0x491f97
mov eax, dword [ebp - 0x388]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
sub ecx, 0x37
mov edx, dword [ebp - 0x384]
add edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x394], cl
jmp 0x491ebb
mov byte [ebp - 0x25c], 0x88
mov byte [ebp - 0x25b], 0x58
movsx eax, byte [ebp - 0x394]
add eax, 0x40
mov byte [ebp - 0x25a], al
mov byte [ebp - 0x259], 0x91
movsx ecx, byte [ebp - 0x391]
shl ecx, 4
movsx edx, byte [ebp - 0x390]
add ecx, edx
mov byte [ebp - 0x258], cl
movsx eax, byte [ebp - 0x393]
shl eax, 4
movsx ecx, byte [ebp - 0x392]
add eax, ecx
mov byte [ebp - 0x257], al
movsx edx, byte [ebp - 0x38d]
shl edx, 4
movsx eax, byte [ebp - 0x38c]
add edx, eax
mov byte [ebp - 0x256], dl
movsx ecx, byte [ebp - 0x38f]
shl ecx, 4
movsx edx, byte [ebp - 0x38e]
add ecx, edx
mov byte [ebp - 0x255], cl
jmp 0x492278
mov eax, dword [ebp + 8]
cmp dword [eax + 0xb0], 0
je 0x492149
mov byte [ebp - 0x398], 0
xor ecx, ecx
mov word [ebp - 0x397], cx
mov dword [ebp - 0xf4], 0
jmp 0x492065
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x10
jge 0x4920de
push 3
push 0
lea eax, [ebp - 0x398]
push eax
call fcn.004e9480
add esp, 0xc
push 2
mov ecx, dword [ebp - 0xf4]
mov edx, dword [ebp + 8]
lea eax, [edx + ecx + 0x47d]
push eax
lea ecx, [ebp - 0x398]
push ecx
call fcn.004e9b20
add esp, 0xc
push 0x10
lea edx, [ebp - 0x338]
push edx
lea eax, [ebp - 0x398]
push eax
call fcn.004ea72c
add esp, 0xc
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0xf4]
cdq
sub eax, edx
sar eax, 1
mov cl, byte [ebp - 0xe4]
mov byte [ebp + eax - 0x25c], cl
jmp 0x492056
mov dword [ebp - 0xf4], 0
jmp 0x4920f9
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x492144
mov eax, dword [ebp - 0xf4]
mov cl, byte [ebp + eax - 0x25c]
mov byte [ebp - 0xc8], cl
mov edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xf4]
mov cl, byte [ebp + eax - 0x25b]
mov byte [ebp + edx - 0x25c], cl
mov edx, dword [ebp - 0xf4]
mov al, byte [ebp - 0xc8]
mov byte [ebp + edx - 0x25b], al
jmp 0x4920ea
jmp 0x492278
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xec], 0
je 0x4921b8
mov dword [ebp - 0xf4], 0
jmp 0x492170
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x4921b3
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [eax + 0x476]
mov byte [ebp + ecx - 0x25c], dl
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [eax + 0x475]
mov byte [ebp + ecx - 0x25b], dl
jmp 0x492161
jmp 0x492278
mov eax, dword [ebp + 8]
cmp dword [eax + 0xf0], 0
je 0x492278
mov dword [ebp - 0xf4], 0
jmp 0x4921e3
mov ecx, dword [ebp - 0xf4]
add ecx, 2
mov dword [ebp - 0xf4], ecx
cmp dword [ebp - 0xf4], 0x10
jge 0x492278
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xf4]
mov cl, byte [edx + 0x47e]
mov byte [ebp + eax - 0x25c], cl
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xf4]
mov cl, byte [edx + 0x47d]
mov byte [ebp + eax - 0x25b], cl
cmp dword [0x673e68], 0
jne 0x492273
mov edx, dword [ebp - 0xf4]
xor eax, eax
mov al, byte [ebp + edx - 0x25c]
test eax, eax
jne 0x492252
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x25c], 0x20
mov edx, dword [ebp - 0xf4]
xor eax, eax
mov al, byte [ebp + edx - 0x25b]
test eax, eax
jne 0x492273
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x25b], 0x20
jmp 0x4921d4
mov edx, dword [ebp + 8]
mov dword [edx + 0xc10], 0x70
push 0x29
mov eax, dword [ebp + 8]
add eax, 0x44c
push eax
lea ecx, [ebp - 0x2c]
push ecx
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x4922b7
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x28
jge 0x492335
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0x2b]
mov byte [ebp + eax - 0x2fe], dl
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0x2c]
mov byte [ebp + eax - 0x2fd], dl
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x2fe]
test ecx, ecx
jne 0x49230f
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x2fe], 0x20
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x2fd]
test ecx, ecx
jne 0x492330
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x2fd], 0x20
jmp 0x4922a8
push 0x15
mov eax, dword [ebp + 8]
add eax, 0x4ff
push eax
lea ecx, [ebp - 0xe0]
push ecx
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x49236a
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x14
jge 0x4923ee
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0xdf]
mov byte [ebp + eax - 0x320], dl
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0xe0]
mov byte [ebp + eax - 0x31f], dl
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x320]
test ecx, ecx
jne 0x4923c8
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x320], 0x20
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x31f]
test ecx, ecx
jne 0x4923e9
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x31f], 0x20
jmp 0x49235b
push 0x3f
mov eax, dword [ebp + 8]
add eax, 0x4ae
push eax
lea ecx, [ebp - 0x98]
push ecx
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x492423
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x3e
jge 0x492462
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0x97]
mov byte [ebp + eax - 0x232], dl
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [ebp + ecx - 0x98]
mov byte [ebp + eax - 0x231], dl
jmp 0x492414
mov eax, dword [ebp + 8]
add eax, 0x4ed
push eax
call fcn.004ea2e0
add esp, 4
test eax, eax
je 0x49254b
push 9
push 0x20
lea ecx, [ebp - 0x344]
push ecx
call fcn.004e9480
add esp, 0xc
mov edx, dword [ebp + 8]
add edx, 0x4ed
push edx
lea eax, [ebp - 0x344]
push eax
call fcn.004e96e0
add esp, 8
mov dword [ebp - 0xf4], 0
jmp 0x4924c2
mov ecx, dword [ebp - 0xf4]
add ecx, 2
mov dword [ebp - 0xf4], ecx
cmp dword [ebp - 0xf4], 8
jge 0x492546
mov edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xf4]
mov cl, byte [ebp + eax - 0x343]
mov byte [ebp + edx - 0x306], cl
mov edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xf4]
mov cl, byte [ebp + eax - 0x344]
mov byte [ebp + edx - 0x305], cl
mov edx, dword [ebp - 0xf4]
xor eax, eax
mov al, byte [ebp + edx - 0x306]
test eax, eax
jne 0x492520
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x306], 0x20
mov edx, dword [ebp - 0xf4]
xor eax, eax
mov al, byte [ebp + edx - 0x305]
test eax, eax
jne 0x492541
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x305], 0x20
jmp 0x4924b3
jmp 0x4925ee
mov dword [ebp - 0xf4], 0
jmp 0x492566
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x4925ee
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [eax + 0xc81]
mov byte [ebp + ecx - 0x306], dl
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xf4]
mov dl, byte [eax + 0xc80]
mov byte [ebp + ecx - 0x305], dl
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x306]
test ecx, ecx
jne 0x4925c8
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x306], 0x20
mov eax, dword [ebp - 0xf4]
xor ecx, ecx
mov cl, byte [ebp + eax - 0x305]
test ecx, ecx
jne 0x4925e9
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x305], 0x20
jmp 0x492557
mov eax, dword [ebp + 8]
cmp dword [eax + 0x73f], 0
jne 0x49260a
mov byte [ebp - 0x334], 0x40
mov byte [ebp - 0x333], 0
jmp 0x492634
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x73f], 1
jne 0x492626
mov byte [ebp - 0x334], 0x4a
mov byte [ebp - 0x333], 4
jmp 0x492634
mov byte [ebp - 0x334], 0x8a
mov byte [ebp - 0x333], 0x84
push 0x200
lea edx, [ebp - 0x334]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xbf3]
add ecx, 0x20400
push ecx
call fcn.004e9b20
add esp, 0xc
push 0x15
push 0x20
lea edx, [ebp - 0x50]
push edx
call fcn.004e9480
add esp, 0xc
mov eax, dword [ebp + 8]
add eax, 0x4ff
push eax
call fcn.004ea2e0
add esp, 4
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x4ff
push ecx
lea edx, [ebp - 0x50]
push edx
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x4926a2
mov eax, dword [ebp - 0x54]
add eax, 2
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0x14
jge 0x4926cc
mov ecx, dword [ebp - 0x54]
mov dl, byte [ebp + ecx - 0x4f]
mov byte [ebp - 0x58], dl
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x54]
mov dl, byte [ebp + ecx - 0x50]
mov byte [ebp + eax - 0x4f], dl
mov eax, dword [ebp - 0x54]
mov cl, byte [ebp - 0x58]
mov byte [ebp + eax - 0x50], cl
jmp 0x492699
mov dword [ebp - 0x54], 0
jmp 0x4926de
mov edx, dword [ebp - 0x54]
add edx, 1
mov dword [ebp - 0x54], edx
cmp dword [ebp - 0x54], 0x14
jge 0x4926fa
mov eax, dword [ebp - 0x54]
movsx ecx, byte [ebp + eax - 0x50]
test ecx, ecx
jne 0x4926f8
mov edx, dword [ebp - 0x54]
mov byte [ebp + edx - 0x50], 0x20
jmp 0x4926d5
push 0x14
lea eax, [ebp - 0x50]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
add edx, 0x10c
push edx
call fcn.004e9b20
add esp, 0xc
push 0x29
push 0x20
lea eax, [ebp - 0xc4]
push eax
call fcn.004e9480
add esp, 0xc
mov ecx, dword [ebp + 8]
add ecx, 0x44c
push ecx
call fcn.004ea2e0
add esp, 4
push eax
mov edx, dword [ebp + 8]
add edx, 0x44c
push edx
lea eax, [ebp - 0xc4]
push eax
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x492769
mov ecx, dword [ebp - 0x54]
add ecx, 2
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 0x28
jge 0x49279f
mov edx, dword [ebp - 0x54]
mov al, byte [ebp + edx - 0xc3]
mov byte [ebp - 0x58], al
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x54]
mov al, byte [ebp + edx - 0xc4]
mov byte [ebp + ecx - 0xc3], al
mov ecx, dword [ebp - 0x54]
mov dl, byte [ebp - 0x58]
mov byte [ebp + ecx - 0xc4], dl
jmp 0x492760
mov dword [ebp - 0x54], 0
jmp 0x4927b1
mov eax, dword [ebp - 0x54]
add eax, 1
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0x28
jge 0x4927d3
mov ecx, dword [ebp - 0x54]
movsx edx, byte [ebp + ecx - 0xc4]
test edx, edx
jne 0x4927d1
mov eax, dword [ebp - 0x54]
mov byte [ebp + eax - 0xc4], 0x20
jmp 0x4927a8
push 0x28
lea ecx, [ebp - 0xc4]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xbf3]
add eax, 0x128
push eax
call fcn.004e9b20
add esp, 0xc
push 0x3f
push 0
lea ecx, [ebp - 0x134]
push ecx
call fcn.004e9480
add esp, 0xc
push 0x3e
mov edx, dword [ebp + 8]
add edx, 0x4ae
push edx
lea eax, [ebp - 0x134]
push eax
call fcn.004e9b20
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x492833
mov ecx, dword [ebp - 0x54]
add ecx, 2
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 0x3e
jge 0x492869
mov edx, dword [ebp - 0x54]
mov al, byte [ebp + edx - 0x133]
mov byte [ebp - 0x58], al
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x54]
mov al, byte [ebp + edx - 0x134]
mov byte [ebp + ecx - 0x133], al
mov ecx, dword [ebp - 0x54]
mov dl, byte [ebp - 0x58]
mov byte [ebp + ecx - 0x134], dl
jmp 0x49282a
push 0x3e
lea eax, [ebp - 0x134]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
add edx, 0xc0
push edx
call fcn.004e9b20
add esp, 0xc
push 9
push 0x20
lea eax, [ebp - 0x38]
push eax
call fcn.004e9480
add esp, 0xc
push 9
push 0x20
lea ecx, [ebp - 0xf0]
push ecx
call fcn.004e9480
add esp, 0xc
mov edx, dword [ebp + 8]
add edx, 0x4ed
push edx
call fcn.004ea2e0
add esp, 4
test eax, eax
je 0x492938
mov dword [ebp - 0x54], 0
jmp 0x4928d5
mov eax, dword [ebp - 0x54]
add eax, 1
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 8
jge 0x492917
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 0x54]
movsx edx, byte [ecx + 0x4ed]
cmp edx, 0x20
jl 0x492915
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0x54]
movsx ecx, byte [eax + 0x4ed]
cmp ecx, 0x7a
jg 0x492915
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x54]
mov cl, byte [edx + 0x4ed]
mov byte [ebp + eax - 0xf0], cl
jmp 0x4928cc
push 8
lea edx, [ebp - 0xf0]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xbf3]
add ecx, 0x158
push ecx
call fcn.004e9b20
add esp, 0xc
mov edx, dword [ebp + 8]
cmp dword [edx + 0xcc], 0
je 0x4929cc
mov eax, dword [ebp + 8]
add eax, 0x4f6
push eax
call fcn.004ea2e0
add esp, 4
test eax, eax
je 0x4929cc
mov dword [ebp - 0x54], 0
jmp 0x49296f
mov ecx, dword [ebp - 0x54]
add ecx, 1
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 8
jge 0x4929ae
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0x54]
movsx eax, byte [edx + 0x4f6]
cmp eax, 0x20
jl 0x4929ac
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 0x54]
movsx edx, byte [ecx + 0x4f6]
cmp edx, 0x7a
jg 0x4929ac
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x54]
mov dl, byte [eax + 0x4f6]
mov byte [ebp + ecx - 0x38], dl
jmp 0x492966
push 8
lea eax, [ebp - 0x38]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
add edx, 0x200
push edx
call fcn.004e9b20
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0x73f], 0
jne 0x4929fa
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
mov byte [edx + 0x160], 0x40
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xbf3]
mov byte [ecx + 0x161], 0
jmp 0x492a48
mov edx, dword [ebp + 8]
cmp dword [edx + 0x73f], 1
jne 0x492a28
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xbf3]
mov byte [ecx + 0x160], 0x4a
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xbf3]
mov byte [eax + 0x161], 4
jmp 0x492a48
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xbf3]
mov byte [edx + 0x160], 0x8a
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xbf3]
mov byte [ecx + 0x161], 0x84
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret