Function at 0x4905c7
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.004e894d
add esp, 8
cmp dword [0x56cd4c], 0
jle 0x4906fc
mov eax, dword [ebp + 8]
cmp dword [eax + 0xef4], 0
je 0x4906fc
mov ecx, dword [0x56cd4c]
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.0040848c
mov edx, dword [ebp + 8]
add edx, 0x81b
push edx
mov eax, dword [0x56cd4c]
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.00504bdd
cmp dword [0x56cd54], 0
jle 0x490739
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xef4], 0
je 0x490739
mov edx, dword [ebp + 8]
add edx, 0x4ff
push edx
mov eax, dword [0x56cd54]
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.00504bdd
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.004e8ae0
add esp, 0xc
push 0x15
mov ecx, dword [ebp + 8]
add ecx, 0x4ff
push ecx
lea edx, [ebp - 0xe0]
push edx
call fcn.004e8ae0
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0xe8], 0
je 0x4909cf
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.004e9200
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 [0x56cc54], 0
je 0x4907f8
lea ecx, [ebp - 0x350]
push ecx
call fcn.004b661e
add esp, 4
mov dword [ebp - 0xf4], 0
jmp 0x490813
mov edx, dword [ebp - 0xf4]
add edx, 1
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 9
jge 0x490927
mov eax, dword [ebp - 0x34c]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x30
jl 0x490876
mov edx, dword [ebp - 0x34c]
add edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xe0]
cmp eax, 0x39
jg 0x490876
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 0x4908cc
mov eax, dword [ebp - 0x34c]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x46
jg 0x4908cc
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 0x490922
mov ecx, dword [ebp - 0x34c]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x66
jg 0x490922
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 0x490804
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 0x491238
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xdc], 0
je 0x490bf8
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 [0x56cc54], 0
je 0x490a20
lea eax, [ebp - 0x360]
push eax
call fcn.004b661e
add esp, 4
movsx ecx, byte [ebp - 0xdd]
cmp ecx, 0x39
jg 0x490b14
movsx edx, byte [ebp - 0xdd]
cmp edx, 0x30
jl 0x490b14
movsx eax, byte [ebp - 0xdc]
cmp eax, 0x39
jg 0x490b14
movsx ecx, byte [ebp - 0xdc]
cmp ecx, 0x30
jl 0x490b14
movsx edx, byte [ebp - 0xda]
cmp edx, 0x39
jg 0x490b14
movsx eax, byte [ebp - 0xda]
cmp eax, 0x30
jl 0x490b14
movsx ecx, byte [ebp - 0xd2]
cmp ecx, 0x39
jg 0x490b14
movsx edx, byte [ebp - 0xd2]
cmp edx, 0x30
jl 0x490b14
movsx eax, byte [ebp - 0xd1]
cmp eax, 0x39
jg 0x490b14
movsx ecx, byte [ebp - 0xd1]
cmp ecx, 0x30
jl 0x490b14
movsx edx, byte [ebp - 0xd0]
cmp edx, 0x39
jg 0x490b14
movsx eax, byte [ebp - 0xd0]
cmp eax, 0x30
jl 0x490b14
movsx ecx, byte [ebp - 0xcf]
cmp ecx, 0x39
jg 0x490b14
movsx edx, byte [ebp - 0xcf]
cmp edx, 0x30
jl 0x490b14
movsx eax, byte [ebp - 0xce]
cmp eax, 0x39
jg 0x490b14
movsx ecx, byte [ebp - 0xce]
cmp ecx, 0x30
jl 0x490b14
movsx edx, byte [ebp - 0xcd]
cmp edx, 0x39
jg 0x490b14
movsx eax, byte [ebp - 0xcd]
cmp eax, 0x30
jge 0x490b3b
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.004a5f5b
add esp, 8
xor eax, eax
jmp 0x491a0d
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 0x491238
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xe0], 0
je 0x490e1e
lea edx, [ebp - 0x39c]
push edx
call fcn.00503be6
push eax
lea ecx, [ebp - 0x380]
call fcn.004b6d90
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.004ea336
add esp, 4
mov dword [ebp - 0x374], eax
lea edx, [ebp - 0x374]
push edx
call fcn.004eb030
add esp, 4
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 0x378]
push eax
push 0x5616c0
push 5
lea ecx, [ebp - 0x36c]
push ecx
call fcn.004eb015
add esp, 0x10
lea edx, [ebp - 0x36c]
push edx
call fcn.004e8897
add esp, 4
mov dword [ebp - 0x370], eax
lea ecx, [ebp - 0x380]
call fcn.004b6cd0
mov dword [ebp - 0x364], eax
mov dword [ebp - 0xf4], 0
jmp 0x490cdc
mov eax, dword [ebp - 0xf4]
add eax, 1
mov dword [ebp - 0xf4], eax
cmp dword [ebp - 0xf4], 4
jge 0x490d78
mov ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xd0]
cmp edx, 0x30
jl 0x490d2f
mov eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xd0]
cmp ecx, 0x39
jg 0x490d2f
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 0x490d73
mov edx, dword [ebp - 0xf4]
movsx eax, byte [ebp + edx - 0xd0]
cmp eax, 0x41
jl 0x490d73
mov ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xd0]
cmp edx, 0x46
jg 0x490d73
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 0x490ccd
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 0x491238
mov eax, dword [ebp + 8]
cmp dword [eax + 0xe4], 0
je 0x490fea
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 0x490e8a
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 0x490f5c
mov ecx, dword [ebp - 0x388]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x30
jl 0x490efb
mov eax, dword [ebp - 0x388]
add eax, dword [ebp - 0xf4]
movsx ecx, byte [ebp + eax - 0xe0]
cmp ecx, 0x39
jg 0x490efb
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 0x490f57
mov ecx, dword [ebp - 0x388]
add ecx, dword [ebp - 0xf4]
movsx edx, byte [ebp + ecx - 0xe0]
cmp edx, 0x46
jg 0x490f57
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 0x490e7b
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 0x491238
mov eax, dword [ebp + 8]
cmp dword [eax + 0xb0], 0
je 0x491109
mov byte [ebp - 0x398], 0
xor ecx, ecx
mov word [ebp - 0x397], cx
mov dword [ebp - 0xf4], 0
jmp 0x491025
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x10
jge 0x49109e
push 3
push 0
lea eax, [ebp - 0x398]
push eax
call fcn.004e8440
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.004e8ae0
add esp, 0xc
push 0x10
lea edx, [ebp - 0x338]
push edx
lea eax, [ebp - 0x398]
push eax
call fcn.004e96f1
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 0x491016
mov dword [ebp - 0xf4], 0
jmp 0x4910b9
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x491104
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 0x4910aa
jmp 0x491238
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0xec], 0
je 0x491178
mov dword [ebp - 0xf4], 0
jmp 0x491130
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x491173
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 0x491121
jmp 0x491238
mov eax, dword [ebp + 8]
cmp dword [eax + 0xf0], 0
je 0x491238
mov dword [ebp - 0xf4], 0
jmp 0x4911a3
mov ecx, dword [ebp - 0xf4]
add ecx, 2
mov dword [ebp - 0xf4], ecx
cmp dword [ebp - 0xf4], 0x10
jge 0x491238
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 [0x6729d8], 0
jne 0x491233
mov edx, dword [ebp - 0xf4]
xor eax, eax
mov al, byte [ebp + edx - 0x25c]
test eax, eax
jne 0x491212
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 0x491233
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x25b], 0x20
jmp 0x491194
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.004e8ae0
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x491277
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x28
jge 0x4912f5
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 0x4912cf
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 0x4912f0
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x2fd], 0x20
jmp 0x491268
push 0x15
mov eax, dword [ebp + 8]
add eax, 0x4ff
push eax
lea ecx, [ebp - 0xe0]
push ecx
call fcn.004e8ae0
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x49132a
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x14
jge 0x4913ae
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 0x491388
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 0x4913a9
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x31f], 0x20
jmp 0x49131b
push 0x3f
mov eax, dword [ebp + 8]
add eax, 0x4ae
push eax
lea ecx, [ebp - 0x98]
push ecx
call fcn.004e8ae0
add esp, 0xc
mov dword [ebp - 0xf4], 0
jmp 0x4913e3
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x3e
jge 0x491422
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 0x4913d4
mov eax, dword [ebp + 8]
add eax, 0x4ed
push eax
call fcn.004e9200
add esp, 4
test eax, eax
je 0x49150b
push 9
push 0x20
lea ecx, [ebp - 0x344]
push ecx
call fcn.004e8440
add esp, 0xc
mov edx, dword [ebp + 8]
add edx, 0x4ed
push edx
lea eax, [ebp - 0x344]
push eax
call fcn.004e86a0
add esp, 8
mov dword [ebp - 0xf4], 0
jmp 0x491482
mov ecx, dword [ebp - 0xf4]
add ecx, 2
mov dword [ebp - 0xf4], ecx
cmp dword [ebp - 0xf4], 8
jge 0x491506
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 0x4914e0
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 0x491501
mov ecx, dword [ebp - 0xf4]
mov byte [ebp + ecx - 0x305], 0x20
jmp 0x491473
jmp 0x4915ae
mov dword [ebp - 0xf4], 0
jmp 0x491526
mov edx, dword [ebp - 0xf4]
add edx, 2
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 8
jge 0x4915ae
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 0x491588
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 0x4915a9
mov edx, dword [ebp - 0xf4]
mov byte [ebp + edx - 0x305], 0x20
jmp 0x491517
mov eax, dword [ebp + 8]
cmp dword [eax + 0x73f], 0
jne 0x4915ca
mov byte [ebp - 0x334], 0x40
mov byte [ebp - 0x333], 0
jmp 0x4915f4
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x73f], 1
jne 0x4915e6
mov byte [ebp - 0x334], 0x4a
mov byte [ebp - 0x333], 4
jmp 0x4915f4
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.004e8ae0
add esp, 0xc
push 0x15
push 0x20
lea edx, [ebp - 0x50]
push edx
call fcn.004e8440
add esp, 0xc
mov eax, dword [ebp + 8]
add eax, 0x4ff
push eax
call fcn.004e9200
add esp, 4
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x4ff
push ecx
lea edx, [ebp - 0x50]
push edx
call fcn.004e8ae0
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x491662
mov eax, dword [ebp - 0x54]
add eax, 2
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0x14
jge 0x49168c
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 0x491659
mov dword [ebp - 0x54], 0
jmp 0x49169e
mov edx, dword [ebp - 0x54]
add edx, 1
mov dword [ebp - 0x54], edx
cmp dword [ebp - 0x54], 0x14
jge 0x4916ba
mov eax, dword [ebp - 0x54]
movsx ecx, byte [ebp + eax - 0x50]
test ecx, ecx
jne 0x4916b8
mov edx, dword [ebp - 0x54]
mov byte [ebp + edx - 0x50], 0x20
jmp 0x491695
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.004e8ae0
add esp, 0xc
push 0x29
push 0x20
lea eax, [ebp - 0xc4]
push eax
call fcn.004e8440
add esp, 0xc
mov ecx, dword [ebp + 8]
add ecx, 0x44c
push ecx
call fcn.004e9200
add esp, 4
push eax
mov edx, dword [ebp + 8]
add edx, 0x44c
push edx
lea eax, [ebp - 0xc4]
push eax
call fcn.004e8ae0
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x491729
mov ecx, dword [ebp - 0x54]
add ecx, 2
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 0x28
jge 0x49175f
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 0x491720
mov dword [ebp - 0x54], 0
jmp 0x491771
mov eax, dword [ebp - 0x54]
add eax, 1
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0x28
jge 0x491793
mov ecx, dword [ebp - 0x54]
movsx edx, byte [ebp + ecx - 0xc4]
test edx, edx
jne 0x491791
mov eax, dword [ebp - 0x54]
mov byte [ebp + eax - 0xc4], 0x20
jmp 0x491768
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.004e8ae0
add esp, 0xc
push 0x3f
push 0
lea ecx, [ebp - 0x134]
push ecx
call fcn.004e8440
add esp, 0xc
push 0x3e
mov edx, dword [ebp + 8]
add edx, 0x4ae
push edx
lea eax, [ebp - 0x134]
push eax
call fcn.004e8ae0
add esp, 0xc
mov dword [ebp - 0x54], 0
jmp 0x4917f3
mov ecx, dword [ebp - 0x54]
add ecx, 2
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 0x3e
jge 0x491829
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 0x4917ea
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.004e8ae0
add esp, 0xc
push 9
push 0x20
lea eax, [ebp - 0x38]
push eax
call fcn.004e8440
add esp, 0xc
push 9
push 0x20
lea ecx, [ebp - 0xf0]
push ecx
call fcn.004e8440
add esp, 0xc
mov edx, dword [ebp + 8]
add edx, 0x4ed
push edx
call fcn.004e9200
add esp, 4
test eax, eax
je 0x4918f8
mov dword [ebp - 0x54], 0
jmp 0x491895
mov eax, dword [ebp - 0x54]
add eax, 1
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 8
jge 0x4918d7
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 0x54]
movsx edx, byte [ecx + 0x4ed]
cmp edx, 0x20
jl 0x4918d5
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0x54]
movsx ecx, byte [eax + 0x4ed]
cmp ecx, 0x7a
jg 0x4918d5
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 0x49188c
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.004e8ae0
add esp, 0xc
mov edx, dword [ebp + 8]
cmp dword [edx + 0xcc], 0
je 0x49198c
mov eax, dword [ebp + 8]
add eax, 0x4f6
push eax
call fcn.004e9200
add esp, 4
test eax, eax
je 0x49198c
mov dword [ebp - 0x54], 0
jmp 0x49192f
mov ecx, dword [ebp - 0x54]
add ecx, 1
mov dword [ebp - 0x54], ecx
cmp dword [ebp - 0x54], 8
jge 0x49196e
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0x54]
movsx eax, byte [edx + 0x4f6]
cmp eax, 0x20
jl 0x49196c
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 0x54]
movsx edx, byte [ecx + 0x4f6]
cmp edx, 0x7a
jg 0x49196c
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 0x491926
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.004e8ae0
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0x73f], 0
jne 0x4919ba
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 0x491a08
mov edx, dword [ebp + 8]
cmp dword [edx + 0x73f], 1
jne 0x4919e8
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 0x491a08
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